希爾密碼就是矩陣乘法密碼,運(yùn)用基本矩陣論原理的替換密碼。每個(gè)字母當(dāng)作26進(jìn)制數(shù)字:A=0, B=1, C=2... 一串字母當(dāng)成n維向量,跟一個(gè)n×n的密鑰矩陣相乘,再將得出的結(jié)果模26。希爾密碼的優(yōu)點(diǎn)是完全隱藏了字符的頻率信息,弱點(diǎn)是容易被已知明文攻擊擊破。
加密
例如:密鑰矩陣
1 3
0 2
明文:HI THERE
去空格,2個(gè)字母一組,根據(jù)字母表順序換成矩陣數(shù)值如下,末尾的E為填充字元:
HI TH ER EE
8 20 5 5
9 8 18 5
HI 經(jīng)過矩陣運(yùn)算轉(zhuǎn)換為 IS,具體算法參考下面的說明:
|1 3| 8 e1*8+3*9=35 MOD26=9 =I
|0 2| 9 e0*8+2*9=18 MOD26=18=S
用同樣的方法把“HI THERE”轉(zhuǎn)換為密文“IS RPGJTJ”,注意明文中的兩個(gè)E分別變?yōu)槊芪闹械腉和T。
解密
解密時(shí),必須先算出密鑰的逆矩陣,然后再根據(jù)加密的過程做逆運(yùn)算。
逆矩陣算法公式:
|A B| = 1/(AD-BC) * | D -B|
|C D| |-C A|
例如密鑰矩陣=
|1 7|
|0 3|
AD-BC=1*3-0*7=3 3*X=1 mod26 所以 X=9
因此
|1 7| 的逆矩陣為: 9 * |3 -7|
|0 3| |0 1|
假設(shè)密文為“FOAOESWO”
FO AO ES WO
6 1 5 23
15 15 19 15
9* |3 -7| | 6| = 9*(3*6-7*15)=-783 mod26 = 23=W
|0 1| |15| = 9*(0*6+1*15)= 135 mod26 = 5 =E
所以密文“FOAOESWO”的明文為“WEREDONE
【Polybius密碼(Polybius Cipher)】
也稱棋盤密碼,是利用波利比奧斯方陣(Polybius Square)進(jìn)行加密的密碼方式,產(chǎn)生于公元前兩世紀(jì)的希臘,相傳是世界上最早的一種密碼。
假設(shè)我們需要發(fā)送明文訊息 “Attack at once”, 用一套秘密混雜的字母表填滿波利比奧斯方陣,像是這樣:
A D F G X
A b t a l p
D d h o z k
F q f v s n
G g j c u x
X m r e w y
i和j視為同一個(gè)字,使字母數(shù)量符合 5 × 5 格。之所以選擇這五個(gè)字母,是因?yàn)樗鼈冏g成摩斯密碼時(shí)不容易混淆,可以降低傳輸錯誤的機(jī)率。使用這個(gè)方格,找出明文字母在這個(gè)方格的位置,再以那個(gè)字母所在的欄名稱和列名稱代替這個(gè)字母。可將該訊息轉(zhuǎn)換成處理過的分解形式。
明文:A T T A C K A T O N C E
密文:AF AD AD AF GF DX AF AD DF FX GF XF
A,D,F,G,X也可以用數(shù)字1,2,3,4,5來代替,這樣密文就成了:
13 12 12 13 43 25 13 12 23 35 43 53 |