密碼學/破解維吉尼亞密碼
外觀
< 密碼學
使用維吉尼亞密碼加密明文,首先要選擇一個由明文使用的符號字母表中的字母組成的關鍵字。然後,使用以下示例的方式,使用關鍵字來加密文字。
使用:明文:我喜歡一本書 並選擇:關鍵字:cta
1. 將所有明文對映到數字 0-25 或字母表的長度
ilikewikibooks converts to 8 11 8 10 4 22 8 10 8 1 14 14 10 18
2. 以相同方式將關鍵字對映到數字
cta maps to 2 19 0
3. 以以下方式將金鑰新增到明文中
8 11 8 10 4 22 8 10 8 1 14 14 10 18 2 19 0 2 19 0 2 19 0 2 19 0 2 19 resulting in 10 30 8 12 23 22 10 29 8 3 33 14 12 37
4. 取每個結果數字 mod 26(或對於一般情況,mod 字母表的字元數)
resulting in 10 4 8 12 23 22 10 3 8 3 7 14 12 11
5. 將每個數字映射回一個字母,以獲得生成的密文
keimxwkdidhoml
使用關鍵字可以輕鬆地解密訊息,只需反轉上述過程即可。關鍵字可以是任何長度,等於或小於明文的長度。
在沒有關鍵字的情況下,破解維吉尼亞密碼的主要方法被稱為卡西斯基檢驗,以第一個發表該方法的普魯士少校的名字命名。第一步是確定金鑰的長度。
給定一個加密的訊息,例如
Plaintext: TOBEORNOTTOBE Keyword: KEYKEYKEYKEYK Ciphertext: DSZOSPXSRDSZO
透過檢查密文,我們發現有幾個重複的二字詞,即 DS、SZ 和 ZO。從統計學上講,這些二字詞全部隨機出現的可能性很小;重複出現的二字詞很可能是明文中的重複出現。如果是這種情況,二字詞必須在兩次編碼時都由金鑰的相同部分編碼。因此,金鑰的長度是文字中重複出現的距離的因子。
| 二字詞 | 第一個位置 | 第二個位置 | 距離 | 因子 |
|---|---|---|---|---|
| DS | 1 | 10 | 9 | 3 |
| SZ | 1 | 10 | 9 | 3 |
| ZO | 1 | 10 | 9 | 3 |
公共因子(事實上,在這個簡單的例子中是唯一的因子)是 3 和 9。這大大縮小了可能性,而且在文字和金鑰更長的情況下,效果更加明顯。
一旦確定了金鑰的長度,就可以應用稍加修改的頻率分析技術。假設已知金鑰的長度為三個。那麼每三個字母就會用金鑰的同一個字母進行加密。密文可以分成三個段 - 每段對應一個金鑰字母 - 然後可以使用為 凱撒密碼 描述的過程。