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

有時候我也是不太厚道的!上中下之后竟然還有剩下的。

拋棄那些紙糊的工具直接用筆來做加密

密碼輪和St.Cyr紙帶的確是實現(xiàn)凱撒加密算法的好工具,但是聰明的我們用紙和筆一樣能完成。

先在紙上寫下A到Z這26個字母,并在字母后面編號,從0到25。意味著0對應A,1對應B,如此類推,那么Z就對應25(你猜對了么?).請注意,我們的編號是從0開始的,編號以25結(jié)束??雌饋硎沁@樣的:

什么,你打豎寫的?一點問題木有

其實這個圖,我們可以這么看,用數(shù)字來表示字母。

這是一個非常重要的概念,具有分水嶺式的意義,因為數(shù)學是基于數(shù)字的,此后我們有了新的途徑去讓數(shù)學和字母融合!

現(xiàn)在我們選擇一個字母,記錄下它的數(shù)字,作為我們的秘鑰。然后把這個數(shù)字和現(xiàn)有字母表下對應的數(shù)字相加,它們的和就是密文。舉個例子,我要加密“Hello.How are you?”,加密秘鑰是13.首先,我們得找到第一個字母H的編號,是7.接著加上秘鑰13,好吧它們的和是多少呢?20?。╳ow,真聰明!7+13=20)那么字母表中20對應的字母是什么呢?沒錯,就是U。同樣的辦法,加密E,就是4+13等于17,17又對應R,所以E加密后就成了R。(我知道,你看到這里肯定頭都大了,沒事,請看下圖)

加密過程

不要以為你全明白了,你真的去做的時候,當你加密O的時候,你會發(fā)現(xiàn):O的編號是14,加密后14+13等于27,問題來了,我們的編碼只到25,但是我們出現(xiàn)了27.當出現(xiàn)這樣的情況的時候,不要著急,只需要把他們減去26就可以了。所以O(shè)加密之后是14+13-26所以是1,對應的是B。因此,O加密后的字符是B。當我們完全加密完這個句子的時候密文是這樣的:“Uryyb. Ubj ner lbh?”(“Hello. How are you?”)

我們總結(jié)一下這個步驟:

1.從1到25選擇一個數(shù)字做密碼,(為什么不選0呢,試一試?。?/p>

2.找到明文(就是加密對象)的字母的編號

3.編號和密碼相加求和

4.如果兩者之和大于等于26,那就減去26

5.找到求和的數(shù)字(或減去26之和的數(shù)字)對應的字母,這就是密文

6.重復第2步到第5部,直到所有明文都加密完

然后再看看,上面的加密過程的圖,是不是秒懂?

現(xiàn)在我們看看如何解密,不過有一個小難點就是,你要理解這個過程里頭的負數(shù)(神馬,竟然有負數(shù)?莫擔心,我教你)。如果你需要補習一下負數(shù)加減法的基礎(chǔ),歡迎點擊http://invpy.com/neg

解密在這里其實是加密的逆過程,通俗一點就是,加密做的是加法,解密就是減法(加減法本質(zhì)上不是一樣的么?你想多了,重點考慮他們?nèi)绾位榭赡姘?。如果沒有這個鉆牛角尖的想法,恭喜你,你是正常人!)。我們看看密文B,它的數(shù)字是1,然后減去秘鑰13,結(jié)果是-12,腫么辦呢?我們在加密的時候?qū)δ切┏^26的數(shù)用的是減法,減去26,在解密的過程中同樣可以引入這個方法,結(jié)果是負數(shù)的時候加上26就好了。-12+26結(jié)果是14,所以密文B對于的是明文O。你看懂了么?

解密的過程

看,其實沒有加密輪什么的耶一樣可以做凱撒加密。如果你的記憶足夠強大,比我強的話,你根本不需要把字母的編號寫下來,直接在腦子里頭就可以完成加密解密的運算。

又到了練習題的時間了。

用凱撒加密的方法(上面學到的),加密下面的文字,別忘了文字后面說的秘鑰

1."AMBIDEXTROUS: Able to pick with equal skill a right-hand pocket or a left." 秘鑰為 4.

2."GUILLOTINE: A machine which makes a Frenchman shrug his shoulders with good reason." 秘鑰為17.

3."IMPIETY: Your irreverence toward my deity." 秘鑰為 21.

接著是解密的游戲

4."ZXAI: P RDHIJBT HDBTIXBTH LDGC QN HRDIRWBTC XC PBTGXRP PCS PBTGXRPCH XC HRDIAPCS." 秘鑰是 15.

5."MQTSWXSV: E VMZEP EWTMVERX XS TYFPMG LSRSVW." 秘鑰是4.

用秘鑰0來加密一下下面的句子:

6."This is a silly example."

下面的詞是被加密過的,嘗試找出他們使用的秘鑰的是多少?

7.ROSEBUD – LIMYVOX

8.YAMAMOTO – PRDRDFKF

9.ASTRONOMY – HZAYVUVTF

下面的句子是用秘鑰8加密的,嘗試一下用秘鑰9解密看看是什么樣子?

10."UMMSVMAA: Cvkwuuwv xibqmvkm qv xtivvqvo i zmdmvom bpib qa ewzbp epqtm."

這里是答案,你做對了么?

1.EQFMHIBXVSYW: Efpi xs tmgo amxl iuyep wompp e vmklx-lerh tsgoix sv e pijx.

2.XLZCCFKZEV: R drtyzev nyzty drbvj r Wivetydre jyilx yzj jyflcuvij nzky xffu ivrjfe.

3.DHKDZOT: Tjpm dmmzqzmzixz ojrvmy ht yzdot.

4.KILT: A costume sometimes worn by Scotchmen in America and Americans in Scotland.

5.IMPOSTOR: A rival aspirant to public honors.

6.This is a silly example.

7.20

8.17

9.7

10.LDDJMDRR: Tmbnllnm ozshdmbd hm okzmmhmf z qdudmfd sgzs hr vnqsg vghkd.

二次加密

或許有讀者突發(fā)奇想,如果把加密后的密文再用同樣的方法換個秘鑰再加密一次,是不是加密的效果就會加倍的好呢?有想法很好,不過這不是凱撒加密的重點。不過,我們也來看看這種加密技巧吧。

舉個例子,比如用秘鑰3加密“KITTEN”這個單詞,密文是“NLWWHQ”。接著我們用秘鑰4加密“NLWWHQ”,新的密文是“RPAALU”。其實如果你嘗試用秘鑰7加密“KITTEN”的時候,你會發(fā)現(xiàn)密文也是“RPAALU”。所以其實這兩次加密的結(jié)果和一次加密的結(jié)果是一樣的,并不能使得加密的效果變得更好。

我們來分析一下它的原因吧,第一次我們用秘鑰3的時候,相當于所有明文的編碼都加了3.當我們在用這個結(jié)果用秘鑰4加密的時候,相當于把密文的編碼全都加了4,相當于原來的明文加了7,所以合成的加密效果其實只是相當于用了秘鑰7加密了一次。

所以,請注意,對于大部分的加密算法而言,重復的對自身加密的過程并不能提高加密的強度。再說了,就這個算法而言,如果兩次加密的秘鑰的和等于26的時候,出來的密文其實就是明文。(這就是聰明過頭的效果)

實際的加密器

凱撒加密,或者類似的加密方法,其實已經(jīng)沿用了好多個世紀(很久很久很久很久以前.....)。下圖呈現(xiàn)的是美國南北戰(zhàn)爭1863年Albert Myer發(fā)明的加密輪。

手工加密解密一段很長的文字的話,這肯定會耗上你非常長的時間。所以今時今日我們可以用計算機來做這個事情。對于計算機來說,我們手工看起來很長的文字,它不到1秒就可能完成了。不過無論如何,我得先教你們學會編程序。

因為我們必須得用計算機能理解的話,告訴計算機讓它干活。顯然,學習編程比學習像日語或者西班牙語這種外文簡單多了。你也不需要知道比加減乘除更多的數(shù)學運算方法(比如微積分,木有!)。下一章我們開始學習Python,記得去下載一個python的安裝包吧。

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

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

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