跳轉到內容

密碼學/破解維吉尼亞密碼

來自華夏公益教科書,自由的教科書

使用維吉尼亞密碼加密明文,首先要選擇一個由明文使用的符號字母表中的字母組成的關鍵字。然後,使用以下示例的方式,使用關鍵字來加密文字。

使用:明文:我喜歡一本書 並選擇:關鍵字: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。這大大縮小了可能性,而且在文字和金鑰更長的情況下,效果更加明顯。

頻率分析

[編輯 | 編輯原始碼]

一旦確定了金鑰的長度,就可以應用稍加修改的頻率分析技術。假設已知金鑰的長度為三個。那麼每三個字母就會用金鑰的同一個字母進行加密。密文可以分成三個段 - 每段對應一個金鑰字母 - 然後可以使用為 凱撒密碼 描述的過程。

[編輯 | 編輯原始碼]
華夏公益教科書