HillCipher
出自KMU Wiki
(修訂版本間差異)
在2008年3月19日 (三) 23:38所做的修訂版本 (編輯) U9314017 (對話 | 貢獻) 小 ←上一個 |
在2008年3月20日 (四) 00:03所做的修訂版本 (編輯) (撤銷) U9314017 (對話 | 貢獻) 小 下一個→ |
||
第30行: | 第30行: | ||
# 將每小組的資料與n*n的加密金鑰相乘 | # 將每小組的資料與n*n的加密金鑰相乘 | ||
# 將3.所得出的結果各自mod26 | # 將3.所得出的結果各自mod26 | ||
- | <blockquote dir="ltr">簡單來說,希爾加密法可用下列方式表示<br><font color="#ff0000" size="2">C=E<sub>K</sub>(P)=KP<br>P=D<sub>K</sub>(C)=K<sup>-1</sup>C=K<sup>-1</sup>KP=P</font><br>其中C是密文,E<sub>K</sub><sub></sub>是加密矩陣,D<sub>K</sub><sub></sub>是解密矩陣,K<sup>-1</sup> | + | # 將4.所得的數字再找出對應的英文字母即為密文 |
+ | # 使用密鑰矩陣之反矩陣即可解密 | ||
+ | <blockquote dir="ltr">簡單來說,希爾加密法可用下列方式表示<br><font color="#ff0000" size="2">C=E<sub>K</sub>(P)=KP<br>P=D<sub>K</sub>(C)=K<sup>-1</sup>C=K<sup>-1</sup>KP=P</font><br>其中C是密文,E<sub>K</sub><sub></sub>是加密矩陣,D<sub>K</sub><sub></sub>是解密矩陣,K<sup>-1</sup><sup></sup>是K的反矩陣,P是明文。<br>要注意的是,用來加密的矩陣必須為可逆,也就是必須能找出其反矩陣才能進行解密的動作。</blockquote> | ||
+ | * <div>'''範例'''</div> | ||
+ | |||
+ | '''''加密''''' <br>密鑰矩陣<br>┌1 3┐<br>└0 2┘<br>明文:HI TH ER E<font color="#ff0000" size="2">E</font> <br>找出各字母對應之數字,末尾的E爲填充字元,原文的每2個字母一組所以需要一個2*2的密鑰矩陣: | ||
+ | |||
+ | {| cellspacing="1" cellpadding="1" width="200" border="1" | ||
+ | |- | ||
+ | | H I | ||
+ | | T H | ||
+ | | E R | ||
+ | | E E | ||
+ | |- | ||
+ | | 8 9 | ||
+ | | 20 8 | ||
+ | | 5 18 | ||
+ | | 5 5 | ||
+ | |} | ||
+ | |||
+ | |||
+ | HI 經過矩陣運算轉換爲 IS | ||
+ | |||
+ | |||
+ | : <br>┌1 3┐8 => 1*8+3*9=35 mod26=9 =>I <br>└0 2┘9 => 0*8+2*9=18 mod26=18=>S <br>利用同樣的方法將其他明文轉成密文,注意最後兩個E轉出來並不為相同的密文 | ||
+ | |||
+ | |||
+ | |||
+ | '''''''''' | ||
+ | |||
+ | '''''解密''''' <br> 先算出密鑰的反矩陣,然後再與密文相乘<br> 反矩陣求法: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ┌A B┐= 1/(AD-BC) * ┌ D -B┐ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | └C D┘ └ -C A┘ |
在2008年3月20日 (四) 00:03所做的修訂版本
希爾加密法 Hill Cipher
- 簡介:
希爾加密法是運用基本矩陣論原理的替代性加密技術 (substitution),由Lester S. Hill在1929年發明。替代性加密的缺點是保留各字母的出現頻率,如此可針對各字母出現頻率以統計方法加以分析,很容易被破解。改善的方式為將原文分割幾個小組群然後逐字經過矩陣計算轉爲密碼文,希爾加密法即是利用此方法,而不採用一個字母替代一個字母的替代法。
- 優點:完全隱藏字元的頻率資訊。使用的矩陣越大,能隱藏的頻率分部資訊就越多。
- 缺點:容易被已知明文攻擊擊破。
- 方法:
A | B | C | D | E | ... |
0 | 1 | 2 | 3 | 4 | ... |
- 找出每個字母所對應的數字
- 將原文的內容分割,每n個視為一小組
- 將每小組的資料與n*n的加密金鑰相乘
- 將3.所得出的結果各自mod26
- 將4.所得的數字再找出對應的英文字母即為密文
- 使用密鑰矩陣之反矩陣即可解密
簡單來說,希爾加密法可用下列方式表示
C=EK(P)=KP
P=DK(C)=K-1C=K-1KP=P
其中C是密文,EK是加密矩陣,DK是解密矩陣,K-1是K的反矩陣,P是明文。
要注意的是,用來加密的矩陣必須為可逆,也就是必須能找出其反矩陣才能進行解密的動作。
- 範例
加密
密鑰矩陣
┌1 3┐
└0 2┘
明文:HI TH ER EE
找出各字母對應之數字,末尾的E爲填充字元,原文的每2個字母一組所以需要一個2*2的密鑰矩陣:
H I | T H | E R | E E |
8 9 | 20 8 | 5 18 | 5 5 |
HI 經過矩陣運算轉換爲 IS
:
┌1 3┐8 => 1*8+3*9=35 mod26=9 =>I
└0 2┘9 => 0*8+2*9=18 mod26=18=>S
利用同樣的方法將其他明文轉成密文,注意最後兩個E轉出來並不為相同的密文
'''''
解密
先算出密鑰的反矩陣,然後再與密文相乘
反矩陣求法:
┌A B┐= 1/(AD-BC) * ┌ D -B┐
└C D┘ └ -C A┘