Chaocipher
此條目需要補充更多來源。 (2012年2月6日) |
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、重複獲取密文和更改碼盤這兩個部分直到加密完成。
解碼過程
編輯跟加密大同小異,只是要從左盤的密文找到右盤對應的明文罷了,碼盤更改方式是一樣的。
參考資料
編輯- Chaocipher Revealed Algorithm(頁面存檔備份,存於互聯網檔案館)-by Rubin, Moshe (July 2, 2010).