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

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

紙做的加密器

在我們學(xué)習(xí)如何用計(jì)算機(jī)寫加解密程序之前,我們先嘗試用紙做一個(gè)加密器。對(duì)應(yīng)英文句子來(lái)說,其實(shí)是很容易把其中的內(nèi)容隱藏到一堆看似亂踢八糟的字母排列中(請(qǐng)參看亂碼的時(shí)候,就是那個(gè)樣子了),其中我們能看懂的英文句子就稱作明文,那堆看起來(lái)亂碼一樣的東西我們稱為密文加密器就是我們?nèi)绾伟衙魑淖兂擅芪牡囊幌盗械囊?guī)則的集合,通俗的說就是加密方法,通常都會(huì)包含秘鑰(秘鑰,就是開你家門的鑰匙,可以這么理解)。我們?cè)谶@邊書里頭會(huì)學(xué)習(xí)到幾種加密器。

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

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


這是密碼輪的內(nèi)圈


這是密碼輪的外圈


具體方法如圖所示

做起來(lái)真的很簡(jiǎn)單,當(dāng)你將兩個(gè)圓剪下來(lái)以后,將小圓放在大圓上,圓心重合的地方用大頭釘摁住,加密器大功告成。

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


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

有了這個(gè)網(wǎng)頁(yè)版的加密輪,你就不需要剪刀和復(fù)印機(jī)了,打開網(wǎng)頁(yè)就好(http://invpy.com/cipherwheel)。用鼠標(biāo)點(diǎn)擊一下外圈,然后轉(zhuǎn)動(dòng)輪子,轉(zhuǎn)到你想要的位置再點(diǎn)擊一下鼠標(biāo)。

如何通過加密輪來(lái)加密消息

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

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

加密過程(簡(jiǎn)單的說,原文是外圈,密文是內(nèi)圈)

對(duì)于這段文字里頭所有字母,我們?cè)谕馊φ业街螅褍?nèi)圈對(duì)應(yīng)的字母一一的標(biāo)記上。比如第一個(gè)字母“T”,在外圈找到后,看內(nèi)圈的字母是“B”,也就是意味著,用8這個(gè)秘鑰加密后,原文所有的“T”都會(huì)對(duì)應(yīng)密文“B”,剩余“T”的出現(xiàn)都可以用“B”替換掉。(請(qǐng)注意,這個(gè)僅僅是用秘鑰8來(lái)加密的時(shí)候能對(duì)應(yīng)上,其他的秘鑰會(huì)對(duì)應(yīng)其他字母)

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


結(jié)果就是這樣的

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

如何通過加密輪解密

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

將外圈A轉(zhuǎn)到內(nèi)圈為15的時(shí)候停下來(lái),對(duì)應(yīng)的是字符P。然后從內(nèi)輪找到第一字符I,對(duì)應(yīng)外輪是T;下一個(gè)是W,對(duì)應(yīng)的外輪是H。然后一個(gè)接一個(gè)的解密,最后會(huì)發(fā)現(xiàn)“The new password is Swordfish.”

The new password is Swordfish.

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

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容