密码(图解密码技术)_第二章_历史上的密码
凱撒密碼
凱撒密碼是一種相傳尤利烏斯·凱撒曾使用過的密碼。凱撒于公元前100年左右誕生于古羅馬,是一位著名的軍事統帥。
凱撒密碼是通過字母按照一定的字數“平移”來進行加密的。
舉例一下:小寫字母(a,b,c…)表示明文,大寫字母(A,B,C…)表示密文
現在我們將字母平移三個字母,于是明文中的a在加密后變成了與其相隔三個字母的D,以此類推到x則會回到字母的開頭變成A,相應的y變成B,z變成C。
a–b--c–d--e–f--g–h--i–j—k–…—w–x--y–z
D-E–F-G–H--I–J--K-L-M-N-…—Z–A--B-C
凱撒密碼的加密:
我們假設保密的信息為danshengou。
此時銘文包含下列10個字母。
danshengou
接下來我們將明文的字母逐一進行加密
d——>G
a——>D
n——>Q
s——>V
h——>K
e——>H
n——>Q
g——>J
o——>R
u——>X
這樣明文danshengou就被轉換成了密文GDQVKHQJRX
開啥密碼中,將字母表中的字母平移這個操作就是密碼的算法,而平移的字母數量則相當于密鑰
明文——————————>密鑰———————————>密文
danshengou——————>密鑰3———————————>GDQVKHQJRX
凱撒密碼解密
現在接收者已經收到密文GDQVKHQJRX,由于密文本身看不懂,因此要解密成明文
解密過程是使用與加密時相同的密鑰進行反向的平移操作。
d<——G
a<——D
n<——Q
s<——V
h<——K
e<——H
n<——Q
g<——J
o<——R
u<——X
這樣我們就得到了明文danshengou
在這個場景中,密鑰33必須有發送者和接收者提前約定好。
明文<——————————密鑰<———————————密文
danshengou<——————密鑰3<———————————GDQVKHQJRX
用暴力破解來破譯密碼
通過上面的講解,我們知道了凱撒密碼加密的密文,接收者能夠解密,那么接收者以外的人(不知道密鑰3的人)在看到密文后,怎么知道明文呢?
在凱撒密碼中,密鑰就是字母表平移的字數。由于字母表只有26個字母,因此加密的密鑰只有0到25共26種(平移0個字母實際上表示沒有加密,但在這里我們也考慮進去)
下面按順序將這26種密鑰都嘗試一遍
GDQVKHQJRX———>密鑰25———>herwlirksy
GDQVKHQJRX———>密鑰24———>ifsxmjsltz
GDQVKHQJRX———>密鑰23———>jgtynktmua
GDQVKHQJRX———>密鑰22———>khuzolunvb
GDQVKHQJRX———>密鑰21———>livapmvowc
GDQVKHQJRX———>密鑰20———>mjwbqnwpxd
GDQVKHQJRX———>密鑰19———>nkxcroxqye
GDQVKHQJRX———>密鑰18———>olydspyrzf
GDQVKHQJRX———>密鑰17———>pmzetqzsag
GDQVKHQJRX———>密鑰16———>qnafuratbh
GDQVKHQJRX———>密鑰15———>robgvsbuci
GDQVKHQJRX———>密鑰14———>spchwtcvdj
GDQVKHQJRX———>密鑰13———>tqdixudwek
GDQVKHQJRX———>密鑰12———>urejyvexfl
GDQVKHQJRX———>密鑰11———>vsfkzwfygm
GDQVKHQJRX———>密鑰10———>wtglaxgzhn
GDQVKHQJRX———>密鑰9———>xuhmbyhaio
GDQVKHQJRX———>密鑰8———>yvinczibjp
GDQVKHQJRX———>密鑰7———>zwjodajckq
GDQVKHQJRX———>密鑰6———>axkpebkdlr
GDQVKHQJRX———>密鑰5———>bylqfclems
GDQVKHQJRX———>密鑰4———>czmrgdmfnt
GDQVKHQJRX———>密鑰3———>danshengou
GDQVKHQJRX———>密鑰2———>ebotifohpv
GDQVKHQJRX———>密鑰1———>fcpujgpiqw
GDQVKHQJRX———>密鑰0———>gdqvkhqjrx
嘗試一遍之后,我們就會發現密鑰為3時,可以解密出有意義的字符串danshengou。
上面介紹的這種破譯方法,就是將所有可能的密鑰全部嘗試一遍,這種方法稱為暴力破解。由于這種方法的本質是從所有的密鑰中找出正確的密鑰,因此又稱為窮舉搜索
簡單替換密碼
凱撒密碼是通過將明文中所使用的字母表平移來生成密文的。但是,如果我們將字母表執行來建立對應關系,那無論哪一種對應關系都可以作為密碼來使用。這種將銘文中所使用的字母替換為另一套字母表的密碼稱為簡單替換密碼。凱撒密碼也可以說是簡單替換密碼的一種。
簡單替換密碼的加密
如上圖中的替換表,對凱撒密碼例子中的明文danshengou進行加密,一次對每個字母進行替換。
d——>F
a——>W
n——>N
s——>L
h——>T
e——>X
n——>N
g——>M
o——>B
u——>A
就可以得到密文FWNLTXNMBA
解密反之
簡單替換密碼的密鑰空間
凱撒密碼可以通過暴力破解來破譯,但簡單替換密碼很難通過暴力破解來破譯。這是因為簡單替換密碼中可以使用的密鑰數量,比凱撒密碼要多得多。
我們來計算一下簡單替換密碼中可以使用密鑰的總數吧。一種密碼能夠使用的“所有密鑰集合”稱為密鑰空間。密鑰靠近越大,暴力破解越困難。
簡單替換密碼中,明文總目標中的a可以對應A—Z這26個字母中的任意一個(26種),b對應除了A以外的(25種)以此類推。
262524*…32*1=403291461126605635584000000
這個數字相當于4兆的約100兆倍,密鑰的數量如此之大,用暴力破解進行窮舉就會非常難,因為即便每秒鐘能遍歷10億個密鑰,要遍歷完所有的密鑰而需要繪畫超過120億年。
(補充1兆=1萬億,即10的12次方)
用頻率分析來破譯密碼
雖然用暴力1破解很難破譯簡單替換密碼,但是用被稱為頻率分析的密碼破譯方法,就能夠破譯簡單替換密碼
頻率分析利用率明文中的字母的出現頻率與密文中的字母的出現頻率一致這一特性。盡管篇幅較長,但為了讓大家體會到破譯密碼的感覺,我來試一下吧
假設你的到下面一段密文,已知明文使用英語寫的,并且時通過簡單替換密碼進行的加密,但是你不知道作為密鑰的替換表。
MEYLGVIWAMEYOPINYZGWYEGMZRUUYPZAIXILGVSIZZMPGKKDWOMEPGROEIWGPCEIPAMDKKEYCIUYMGIFRWCEGLOPINYZHRZMPDNYWDWOGWITDWYSEDCEEIAFYYWMPIDWYAGTYPIKGLMXFPIWCEHRZMMEYMEDWOMGQRYWCEUXMEDPZMQRGMEEYAPISDWOFICJILYSNICYZEYMGGJIPRWIWAIHRUNIWAHRZMUDZZYAMEYFRWCEMRPWDWOPGRWAIOIDWSDMEIGWYMSGMEPYYEYHRUNYARNFRMSDMEWGOPYIMYPZRCCYZZIOIDWIWAIOIDWEYMPDYAILMYPMEYMYUNMDWOUGPZYKFRMIMKIZMEIAMGODTYDMRNIWASIKJYAISIXSDMEEDZWGZYDWMEYIDPZIXDWODIUZRPYMEYXIPYZGRPDMDZYIZXMGAYZNDZYSEIMXGRCIWWGMOYM
首先,我們來統計一下這段密文中每個字母出現的頻率。也就是說我們要數一下每個字母出現了多少次
字母———個數
I—————47
Y—————47
M—————45
W—————35
E—————33
D—————30
G—————27
Z—————27
P—————26
R—————22
A—————17
O—————16
C—————12
S—————11
N—————10
U—————10
K—————8
X—————8
F—————7
L—————6
H—————5
J—————3
T—————3
Q—————2
V—————2
B—————0
為了找到破譯的線索,我們再來看一看英語文章中所使用的字母頻率。例如將愛倫·坡的《金甲蟲》中出現的英文字母按照評論排序的結果是:e,t,a,o,i,n,s,h,r,d,l,u,c,m,f,w,g,y,p,b,v,k,j,q,z。這一順序根據所統計的文章的不同會有所變化,但一般的英語文章中出現頻率最高的字母是e,這點基本上不會有錯的。
上文中頻率最高的兩個字母是I和Y,我們假設它們中其中一個是e。假設Y—>e時,我們將密文中Y全換成e
MEeLGVIWAMEeOPINeZGWeEGMZRUUePZAIXILGVSIZZMPGKKDWOMEPGROEIWGPCEIPAMDKKEeCIUeMGIFRWCEGLOPINeZHRZMPDNeWDWOGWITDWeSEDCEEIAFeeWMPIDWeAGTePIKGLMXFPIWCEHRZMMEeMEDWOMGQReWCEUXMEDPZMQRGMEEeAPISDWOFICJILeSNICeZEeMGGJIPRWIWAIHRUNIWAHRZMUDZZeAMEeFRWCEMRPWDWOPGRWAIOIDWSDMEIGWeMSGMEPeeEeHRUNeARNFRMSDMEWGOPeIMePZRCCeZZIOIDWIWAIOIDWEeMPDeAILMePMEeMeUNMDWOUGPZeKFRMIMKIZMEIAMGODTeDMRNIWASIKJeAISIXSDMEEDZWGZeDWMEeIDPZIXDWODIUZRPeMEeXIPeZGRPDMDZeIZXMGAeZNDZeSEIMXGRCIWWGMOeM
英語中出現最多的單詞時the,因此我們可以尋找一下以e結尾的3個字母組合,就發現了MEe這三個字母是經常出現的所有M—>t,E—>h
theLGVIWAtheOPINeZGWehGtZRUUePZAIXILGVSIZZtPGKKDWOthPGROhIWGPChIPAtDKKheCIUetGIFRWChGLOPINeZHRZtPDNeWDWOGWITDWeShDChhIAFeeWtPIDWeAGTePIKGLtXFPIWChHRZtthethDWOtGQReWChUXthDPZtQRGthheAPISDWOFICJILeSNICeZhetGGJIPRWIWAIHRUNIWAHRZtUDZZeAtheFRWChtRPWDWOPGRWAIOIDWSDthIGWetSGthPeeheHRUNeARNFRtSDthWGOPeItePZRCCeZZIOIDWIWAIOIDWhetPDeAILtePtheteUNtDWOUGPZeKFRtItKIZthIAtGODTeDtRNIWASIKJeAISIXSDthhDZWGZeDWtheIDPZIXDWODIUZRPetheXIPeZGRPDtDZeIZXtGAeZNDZeShItXGRCIWWGtOet
讓我們動員所有的英語詞匯,在上面的文字中繼續尋中可能的組合。我們發現一個詞thPee比較可疑,這個詞不會就是three吧,P—>r
theLGVIWAtheOrINeZGWehGtZRUUerZAIXILGVSIZZtrGKKDWOthrGROhIWGrChIrAtDKKheCIUetGIFRWChGLOrINeZHRZtrDNeWDWOGWITDWeShDChhIAFeeWtrIDWeAGTerIKGLtXFrIWChHRZtthethDWOtGQReWChUXthDrZtQRGthheArISDWOFICJILeSNICeZhetGGJIrRWIWAIHRUNIWAHRZtUDZZeAtheFRWChtRrWDWOrGRWAIOIDWSDthIGWetSGthreeheHRUNeARNFRtSDthWGOreIterZRCCeZZIOIDWIWAIOIDWhetrDeAILtertheteUNtDWOUGrZeKFRtItKIZthIAtGODTeDtRNIWASIKJeAISIXSDthhDZWGZeDWtheIDrZIXDWODIUZRretheXIreZGRrDtDZeIZXtGAeZNDZeShItXGRCIWWGtOet
通過上文的文字,我們可以發現很多類似he,re,er,ter這樣的說明P—>r是對的
接下來我們來看看密文的結尾Oet到底是bet,get,let,set…些組合中的哪一種呢?說實話我只知道get所有先猜是get把O—>g
theLGVIWAthegrINeZGWehGtZRUUerZAIXILGVSIZZtrGKKDWgthrGRghIWGrChIrAtDKKheCIUetGIFRWChGLgrINeZHRZtrDNeWDWgGWITDWeShDChhIAFeeWtrIDWeAGTerIKGLtXFrIWChHRZtthethDWgtGQReWChUXthDrZtQRGthheArISDWgFICJILeSNICeZhetGGJIrRWIWAIHRUNIWAHRZtUDZZeAtheFRWChtRrWDWgrGRWAIgIDWSDthIGWetSGthreeheHRUNeARNFRtSDthWGgreIterZRCCeZZIgIDWIWAIgIDWhetrDeAILtertheteUNtDWgUGrZeKFRtItKIZthIAtGgDTeDtRNIWASIKJeAISIXSDthhDZWGZeDWtheIDrZIXDWgDIUZRretheXIreZGRrDtDZeIZXtGAeZNDZeShItXGRCIWWGtget
下面我們逐一列出所找到的組合以及假設的對應關系。
thethDWg這個組合,有可能是the thing(D—>i,W—>n)
grINe這個組合,找了找有很多可能單詞,如grace,grade,grape,grate,grave,grape,grofe,…就很難,我們先假設I---->a然后我們可以找到greater這樣的組合因此I—>a應該是正確的。但如果假設N—>c則會出現tricening這樣的組合,這個單詞怎么看也不象是英語,N—>c是錯的。
英語出現頻率較高的字母中,只有o還沒有出現,先假設G—>o
使用上面所有的假設重新替換一下密文
theLoVanAthegraNeZonehotZRUUerZAaXaLoVSaZZtroKKingthroRghanorCharAtiKKheCaUetoaFRnChoLgraNeZHRZtriNeningonaTineShiChhaAFeentraineAoTeraKoLtXFranChHRZtthethingtoQRenChUXthirZtQRothheAraSingFaCJaLeSNaCeZhetooJarRnanAaHRUNanAHRZtUiZZeAtheFRnChtRrningroRnAagainSithaonetSothreeheHRUNeARNFRtSithnogreaterZRCCeZZagainanAagainhetrieAaLtertheteUNtingUorZeKFRtatKaZthaAtogiTeitRNanASaKJeAaSaXSithhiZnoZeintheairZaXingiaUZRretheXareZoRritiZeaZXtoAeZNiZeShatXoRCannotget
這回結尾出現了Cannotget這樣的組合,那么C—>c應該是沒錯啦,那高高的N—>c就是錯的
Shich整個兒組合,大概是which所有S—>w
theehingtoQRench這個組合 應該是 the thing to quench。(Q—>q,R—>u)
hotZuUUer這個組合 應該是 hot summer.(Z—>s,U—>m)
successagainanAagain 很明顯是 success again and again (A—>d)
triedaLter 應該是 tried after (L—>f)
whatXoucannotget應該是 what you can not get (X—>y)
thefoVandthegraNesonehotsummersday應該是the fox and the grapes one hot summber day(V—>x,N—>p)
用上面的假設重新替換密文后,我們發現小寫字母的比例大幅度增加了,這說明我們已經基本上完成了破譯工作。
thefoxandthegrapesonehotsummersdayafoxwasstroKKingthroughanorchardtiKKhecametoaFunchofgrapesHustripeningonaTinewhichhadFeentrainedoTeraKoftyFranchHustthethingtoquenchmythirstquothhedrawingFacJafewpaceshetooJarunandaHumpandHustmissedtheFunchturningroundagainwithaonetwothreeheHumpedupFutwithnogreatersuccessagainandagainhetriedafterthetemptingmorseKFutatKasthadtogiTeitupandwaKJedawaywithhisnoseintheairsayingiamsuretheyaresouritiseasytodespisewhatyoucannotget
接下來就找點線索就出來了
foxwasstroKKing
fox was strolling (K—>l)
hetooJarunandaHumpanHusatmissed
he took a run and a jump and just missed (H—>j,J—>k)
hejumpedpFutwithnogreatersuccess
he jumped up but with no greater success(F—>b)
butatlasthadtogiTeitup
but at last had to give it up(T—>v)
沒有使用到的最后一個字母(B—>z)
這樣我們就全部破譯出來了,替換表如下
a—>I
b—>F
c—>C
d—>A
e—>Y
f—>L
g—>O
h—>E
i—>D
j—>H
k—>J
l—>K
m—>U
n—>W
o—>G
p—>N
q—>Q
r—>P
s—>Z
t—>M
u—>R
v—>T
w—>S
x—>V
y—>X
z—>B
明文如下
thefoxandthegrapesonehotsummersdayafoxwasstrollingthroughanorchardtillhecametoabunchofgrapesjustripeningonavinewhichhadbeentrainedoveraloftybranchjustthethingtoquenchmythirstquothhedrawingbackafewpaceshetookarunandajumpandjustmissedthebunchturningroundagainwithaonetwothreehejumpedupbutwithnogreatersuccessagainandagainhetriedafterthetemptingmorselbutatlasthadtogiveitupandwalkedawaywithhisnoseintheairsayingiamsuretheyaresouritiseasytodespisewhatyoucannotget
補那些空格和標點符號就算了,我是廢物
其實還有一個密碼機我就不寫了自己網上找找資料吧。。
總結
以上是生活随笔為你收集整理的密码(图解密码技术)_第二章_历史上的密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 密码(图解密码技术)_第一章_环游密码世
- 下一篇: 伪加密破解