跳至內容

Chaocipher

維基百科,自由的百科全書

Chaocipher是John F. Byrne於1918年設計出的一套加密系統。 1954年,他在他的自傳《Silent Year》中加入了一個用Chaocipher加密後的消息作為謎題來挑戰讀者。2010年5月,Byrne家族將所有與Chaocipher相關的文件和物件捐獻給美國國家密碼博物館英版維基百科資料頁面存檔備份,存於網際網路檔案館)),Chaocipher的加密方式才就此大白於天下,書中的謎題也由此得到破解頁面存檔備份,存於網際網路檔案館)。

加密方式

實體模型

實體的加密機模型由兩個密碼盤和基座組成,基座內有齒輪,保證與密碼盤連接的兩個齒輪旋轉方向相反,轉速相同。密碼盤分為左盤和右盤,左盤為加密後的字母(密文),右盤為加密前的字母(明文)。密碼盤可從齒輪上快速卸下。密碼盤上各有26個字母,每個字母可從密碼盤上快速卸下。

標準的Chaocipher密碼字母盤如下:

左盘(按逆时针方向排列): HXUCZVAMDSLKPEFJRIGTWOBNYQ
右盘(按顺时针方向排列): PTLNBQDEOYSFAVZKGJRIHWXUMC

各個人可以指定各自的字母盤

定義兩個位置:高點(+),低點(*)(在密碼盤上位置相對)。在我們用字符串表示出的密碼盤狀態里,兩個位點分別對應第一位和第十四位。

加密過程

準備工作

1、選定一個初始狀態:這裡我們簡單點,就以上面給出的標準盤的順序。當然我們也可以比如說讓左盤從W開頭(WOBNYQ...)。加密的文字我們用WELLDONEISBETTERTHANWELLSAID(說得好不如做得好)

獲取密文

2、在右盤中找到要加密的字母,這裡是W。

3、找出W對應的密文(實物模型上相當於將右盤旋轉使W在高點,因為會帶動左盤,左盤高點對應的字母就是密文。在字符串里我們先直接用感嘆號表示出來),這裡是O,記下來。

标识:+            *       !
左: HXUCZVAMDSLKPEFJRIGTWOBNYQ
右: PTLNBQDEOYSFAVZKGJRIHWXUMC

更改碼盤

這裡是Chaocipher的精髓,通過對碼盤的時時變換,把簡單的[單字母表對應]轉變成了隨機關鍵詞對應。

4、剛才在實體模型上我們已經把那兩個字符都轉到了高位上,但是字符串這兒還沒有。轉一下。

标识:+            *       
左: OBNYQHXUCZVAMDSLKPEFJRIGTW
右: WXUMCPTLNBQDEOYSFAVZKGJRIH

5、把左盤高位字母逆時針方向的第一個字母取下來(字符串的第二個字母)

标识:+            *       
左: O.NYQHXUCZVAMDSLKPEFJRIGTW
右: WXUMCPTLNBQDEOYSFAVZKGJRIH

6、把從逆時針第二個字母(字符串第三個字母)到低位的所有字母前移一位,並把剛才取下的字母放到低位

标识:+            *     
左: ONYQHXUCZVAMDBSLKPEFJRIGTW
右: WXUMCPTLNBQDEOYSFAVZKGJRIH

7、現在是右盤。轉變方式和左盤不同!先將右盤向逆時針方向旋轉一位(對於實體模型,要把右盤卸下來,因為這一步不能帶動左盤旋轉),也就是在字符串上將右盤每個字符前移一位,第一個字符放到最後。

标识:+            *       
左: ONYQHXUCZVAMDBSLKPEFJRIGTW(左盘不动)
右: XUMCPTLNBQDEOYSFAVZKGJRIHW

8、把右盤高位字母順時針方向的第二個字母取下來(字符串的第三個字母)

标识:+            *       
左: ONYQHXUCZVAMDBSLKPEFJRIGTW
右: XU.CPTLNBQDEOYSFAVZKGJRIHW

9、把從逆時針第三個字母(字符串第四個字母)到低位的所有字母前移一位,並把剛才取下的字母放到低位

标识:+            *       
左: ONYQHXUCZVAMDBSLKPEFJRIGTW
右: XUCPTLNBQDEOYMSFAVZKGJRIHW

10、重複獲取密文和更改碼盤這兩個部分直到加密完成。

解碼過程

跟加密大同小異,只是要從左盤的密文找到右盤對應的明文罷了,碼盤更改方式是一樣的。

參考資料