破解密碼那些事兒(chapter 1,從零開始做加密,中)

(上次說到的是摩斯電碼,現(xiàn)在接著上一回)

紙做的加密器

在我們學習如何用計算機寫加解密程序之前,我們先嘗試用紙做一個加密器。對應英文句子來說,其實是很容易把其中的內容隱藏到一堆看似亂踢八糟的字母排列中(請參看亂碼的時候,就是那個樣子了),其中我們能看懂的英文句子就稱作明文,那堆看起來亂碼一樣的東西我們稱為密文加密器就是我們如何把明文變成密文的一系列的規(guī)則的集合,通俗的說就是加密方法,通常都會包含秘鑰(秘鑰,就是開你家門的鑰匙,可以這么理解)。我們在這邊書里頭會學習到幾種加密器。

下面我們進入主題,這次使用的加密器叫做Caesar加密器(估計不翻譯人名,對了你聽說過凱撒大帝么,哦原來就是那個那個凱撒大帝,一般人的第一反應反應都會這樣)。沒錯這個就是2000多年前,那位征服埃及艷后的凱撒大帝發(fā)明的加密算法(不要再想埃及艷后了),這個算法是如此的簡單而且容易學習,但是回到2000年前確實是一個了不起的發(fā)明。你知道了凱撒的秘密,于是你想去在現(xiàn)實中去用來加密消息么?別傻了,這個算法對計算機來說,要破解簡直就是小菜一碟。但是學習這個入門還是很有意義的。如果想了解更多這個算法的故事,請瀏覽http://en.wikipedia.org/wiki/Caesar_cipher。

為了將明文轉化為密文,凱撒發(fā)明一個叫密碼輪(題外話:又是我胡扯的時候了,偉大的圖靈先生當年破解的德軍的加密器,其實也是從這個密碼輪衍生出來的,什么你不知道圖靈,好吧你知道喬布斯的蘋果吧,為什么咬了一口,恩!圖靈咬的)的東西。你可以嘗試復印下面的圖然后剪下來,將兩個圓的圓心釘在一起就完成了。這還有個電子版的http://invpy.com/cipherwheel 打印出來然后再剪下來。


這是密碼輪的內圈


這是密碼輪的外圈


具體方法如圖所示

做起來真的很簡單,當你將兩個圓剪下來以后,將小圓放在大圓上,圓心重合的地方用大頭釘摁住,加密器大功告成。

網(wǎng)頁版的加密輪


網(wǎng)頁版的加密輪

有了這個網(wǎng)頁版的加密輪,你就不需要剪刀和復印機了,打開網(wǎng)頁就好(http://invpy.com/cipherwheel)。用鼠標點擊一下外圈,然后轉動輪子,轉到你想要的位置再點擊一下鼠標。

如何通過加密輪來加密消息

首先,先把你要加密的消息寫在紙上。比如我要加密這段文字“The secret password is Rosebud.”接著,沿著內輪的字母去找到對應外輪的字母,對了,外輪的A上有個點,可以幫助你更好的找到對應的字母,同時這個點對應的內圈上的數(shù)字就是加密秘鑰

加密秘鑰是加密消息和解密密文的關鍵。讀了本書的小伙伴們都能學習到凱撒加密的方法,正如讀了有關門鎖的材料也會學習到門鎖的原理一樣。正如普通的門鎖一樣,有鎖頭和鑰匙,除非他們掌握了秘鑰,不然他們是無法讀懂這段加了密的密文的。從圖上可以看出,凱撒加密器的秘鑰只能是0到25。如上圖所示,外圈A對應的內圈數(shù)字為8,沒錯,這個8就是秘鑰,我們就示范用這個秘鑰來加密消息。一定要保管好秘鑰(就是一般人我不告訴他?。?,加密之后只有知道是秘鑰8的人才能解密出原文。

加密過程(簡單的說,原文是外圈,密文是內圈)

對于這段文字里頭所有字母,我們在外圈找到之后,把內圈對應的字母一一的標記上。比如第一個字母“T”,在外圈找到后,看內圈的字母是“B”,也就是意味著,用8這個秘鑰加密后,原文所有的“T”都會對應密文“B”,剩余“T”的出現(xiàn)都可以用“B”替換掉。(請注意,這個僅僅是用秘鑰8來加密的時候能對應上,其他的秘鑰會對應其他字母)

下一個字母是H,對應的是P。在下一個是E對應的是M,當我們加密完所有的字母后,原來的“The secret password is Rosebud.”就變成了“Bpm amkzmb xiaaewzl qa Zwamjcl.”。這個時候你把加密后的消息發(fā)送給別人,誰也不曉得你說的是啥鳥語,除非你告訴他用秘鑰8來解密。(試想一下,那些截獲凱撒的情報的人,估計都看瘋掉了)


結果就是這樣的

在同一個秘鑰里頭,每個在外輪的字母加密后都會對應內輪的字母,為了節(jié)省時間,每加密一個字母,就可以替換出現(xiàn)在其他位置的同一個字母。這樣你只需要對每個字母查一次表就可以完成了。

如何通過加密輪解密

解密在這里是加密的逆過程,加密是是先看外輪再看內輪,解密是先看內輪再看外輪。譬如你收到你的朋友發(fā)過來的消息“Iwt ctl ephhldgs xh Hldgsuxhw.”,你的第一反應就是這是神馬火星文。要是你知道秘鑰或者是一個聰明的黑客的話那就不一樣了,你朋友悄悄告訴你,秘鑰是15。

將外圈A轉到內圈為15的時候停下來,對應的是字符P。然后從內輪找到第一字符I,對應外輪是T;下一個是W,對應的外輪是H。然后一個接一個的解密,最后會發(fā)現(xiàn)“The new password is Swordfish.”

The new password is Swordfish.

如果你嘗試用16來解密這段文字的話,出來的結果是“Sgd?mdv ozrrvnqc hr Rvnqcehrg.”你英文再好也讀不出來這是啥意思,所以解密的時候除非用了正確的秘鑰,不然解密出來的仍然是一堆亂碼。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容