![CTF中那些腦洞大開(kāi)的編碼和加密_第1頁(yè)](http://file4.renrendoc.com/view/03d762e1e34fe265bee4787357b3fe50/03d762e1e34fe265bee4787357b3fe501.gif)
![CTF中那些腦洞大開(kāi)的編碼和加密_第2頁(yè)](http://file4.renrendoc.com/view/03d762e1e34fe265bee4787357b3fe50/03d762e1e34fe265bee4787357b3fe502.gif)
![CTF中那些腦洞大開(kāi)的編碼和加密_第3頁(yè)](http://file4.renrendoc.com/view/03d762e1e34fe265bee4787357b3fe50/03d762e1e34fe265bee4787357b3fe503.gif)
![CTF中那些腦洞大開(kāi)的編碼和加密_第4頁(yè)](http://file4.renrendoc.com/view/03d762e1e34fe265bee4787357b3fe50/03d762e1e34fe265bee4787357b3fe504.gif)
![CTF中那些腦洞大開(kāi)的編碼和加密_第5頁(yè)](http://file4.renrendoc.com/view/03d762e1e34fe265bee4787357b3fe50/03d762e1e34fe265bee4787357b3fe505.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 HYPERLINK /fox_wayen/article/details/78235192 CTF中那些腦洞大開(kāi)的編碼和加密0 x00 前言正文開(kāi)始之前先閑扯幾句吧,玩CTF的小伙伴也許會(huì)遇到類似這樣的問(wèn)題:表哥,你知道這是什么加密嗎?其實(shí)CTF中腦洞密碼題(非現(xiàn)代加密方式)一般都是各種古典密碼的變形,一般出題者會(huì)對(duì)密文進(jìn)行一些處理,但是會(huì)給留一些線索,所以寫(xiě)此文的目的是想給小伙伴做題時(shí)給一些參考,當(dāng)然常在CTF里出現(xiàn)的編碼也可以了解一下。本來(lái)是想盡快寫(xiě)出參考的文章,無(wú)奈期間被各種事情耽擱導(dǎo)致文章斷斷續(xù)續(xù)寫(xiě)了2個(gè)月,文章肯定有許多沒(méi)有提及到,歡迎小伙伴補(bǔ)充,總之,希望對(duì)小伙伴們有幫助吧!最后
2、歡迎小伙伴來(lái)博客( HYPERLINK / t _blank /)玩耍:P(ps:由于寫(xiě)文章是用markdown,而論壇編輯器不支持markdown語(yǔ)法,雖然我已經(jīng)盡力去調(diào)整對(duì)其字符,可是效果還是不盡人意,如果影響閱讀理解可以去博客閱讀:P)0 x01 目錄 常見(jiàn)編碼: 1.ASCII編碼 2.Base64/32/16編碼 3.shellcode編碼 4.Quoted-printable編碼 5.XXencode編碼 6.UUencode編碼 7.URL編碼 8.Unicode編碼 9.Escape/Unescape編碼 10.HTML實(shí)體編碼 11.敲擊碼(Tap code) 12.莫爾斯電
3、碼(Morse Code) 13.編碼的故事 各種文本加密 換位加密: 1.柵欄密碼(Rail-fence Cipher) 2.曲路密碼(Curve Cipher) 3.列移位密碼(Columnar Transposition Cipher) 替換加密: 1.埃特巴什碼(Atbash Cipher) 2.凱撒密碼(Caesar Cipher) 3.ROT5/13/18/47 4.簡(jiǎn)單換位密碼(Simple Substitution Cipher) 5.希爾密碼(Hill Cipher) 6.豬圈密碼(Pigpen Cipher) 7.波利比奧斯方陣密碼(Polybius Square Ciph
4、er) 8.夏多密碼(曲折加密) 9.普萊菲爾密碼(Playfair Cipher) 10.維吉尼亞密碼(Vigenre Cipher) 11.自動(dòng)密鑰密碼(Autokey Cipher) 12.博福特密碼(Beaufort Cipher) 13.滾動(dòng)密鑰密碼(Running Key Cipher) 14.Porta密碼(Porta Cipher) 15.同音替換密碼(Homophonic Substitution Cipher) 16.仿射密碼(Affine Cipher) 17.培根密碼(Baconian Cipher) 18.ADFGX和ADFGVX密碼(ADFG/VX Cipher)
5、19.雙密碼(Bifid Cipher) 20.三分密碼(Trifid Cipher) 21.四方密碼(Four-Square Cipher) 22.棋盤(pán)密碼(Checkerboard Cipher) 23.跨棋盤(pán)密碼(Straddle Checkerboard Cipher) 24.分組摩爾斯替換密碼(Fractionated Morse Cipher) 25.Bazeries密碼(Bazeries Cipher) 26.Digrafid密碼(Digrafid Cipher) 27.格朗普雷密碼(Grandpr Cipher) 28.比爾密碼(Beale ciphers) 29.鍵盤(pán)密碼(K
6、eyboard Cipher) 其他有趣的機(jī)械密碼: 1.恩尼格瑪密碼 代碼混淆加密: 1.asp混淆加密 2.php混淆加密 3.css/js混淆加密 4.VBScript.Encode混淆加密 5.ppencode 6.rrencode 7.jjencode/aaencode 8.JSfuck 9.jother 10.brainfuck編程語(yǔ)言 相關(guān)工具 參考網(wǎng)站 彩蛋0 x02 正文常見(jiàn)編碼1.ASCII編碼ASCII編碼大致可以分作三部分組成:第一部分是:ASCII非打印控制字符(參詳ASCII碼表中0-31);第二部分是:ASCII打印字符,也就是CTF中常用到的轉(zhuǎn)換;第三部分是:擴(kuò)
7、展ASCII打印字符(第一第三部分詳見(jiàn)ASCII碼表( HYPERLINK / t _blank /)解釋)。編碼轉(zhuǎn)換示例源文本:The quick brown fox jumps over the lazy dogASCII編碼對(duì)應(yīng)十進(jìn)制: 84 104 101 32 113 117 105 99 107 32 98 114 111 119 110 32 102 111 120 32 106 117 109 112 115 32 111 118 101 114 32 116 104 101 32 108 97 122 121 32 100 111 103對(duì)應(yīng)可以轉(zhuǎn)換成二進(jìn)制,八進(jìn)制,十六進(jìn)制
8、等。2.Base64/32/16編碼base64、base32、base16可以分別編碼轉(zhuǎn)化8位字節(jié)為6位、5位、4位。16,32,64分別表示用多少個(gè)字符來(lái)編碼,這里我注重介紹base64。Base64常用于在通常處理文本數(shù)據(jù)的場(chǎng)合,表示、傳輸、存儲(chǔ)一些二進(jìn)制數(shù)據(jù)。包括MIME的email,email via MIME,在XML中存儲(chǔ)復(fù)雜數(shù)據(jù)。編碼原理:Base64編碼要求把3個(gè)8位字節(jié)轉(zhuǎn)化為4個(gè)6位的字節(jié),之后在6位的前面補(bǔ)兩個(gè)0,形成8位一個(gè)字節(jié)的形式,6位2進(jìn)制能表示的最大數(shù)是2的6次方是64,這也是為什么是64個(gè)字符(A-Z,a-z,0-9,+,/這64個(gè)編碼字符,=號(hào)不屬于編碼字符
9、,而是填充字符)的原因,這樣就需要一張映射表,如下:舉個(gè)例子(base64): 源文本:T h e 對(duì)應(yīng)ascii碼:84 104 101 8位binary:01010100 01101000 01100101 6位binary:010101 000110 100001 100101 高位補(bǔ)0:000010101 00000110 00100001 00100101 對(duì)應(yīng)ascii碼:21 6 33 37 查表:VGhl利用Python base64模塊,我們分別可以這樣加密解密base64 32 16:3.shellcode編碼源文本:The quick brown fox jumps ov
10、er the lazy dog編碼后:x54x68x65x7fx71x75x69x63x6bx7fx62x72x6fx77x6ex7fx66x6fx78x7fx6ax75x6dx70 x73x7fx6fx76x65x72x7fx74x68x65x7fx6cx61x7ax79x7fx64x6fx674.Quoted-printable 編碼它是多用途互聯(lián)網(wǎng)郵件擴(kuò)展(MIME) 一種實(shí)現(xiàn)方式。有時(shí)候我們可以郵件頭里面能夠看到這樣的編碼,編碼原理參考( HYPERLINK /494.html t _blank /494.html)。源文本:敏捷的棕色狐貍跳過(guò)了懶惰的狗編碼后: =E6=95=8F=E
11、6=8D=B7=E7=9A=84=E6=A3=95=E8=89=B2=E7=8B=90=E7=8B=B8=E8=B7=B3=E8 =BF=87=E4=BA=86=E6=87=92=E6=83=B0=E7=9A=84=E7=8B=97編碼解碼鏈接( HYPERLINK /tools/QuotedPrintable.aspx t _blank /tools/QuotedPrintable.aspx)5.XXencode編碼XXencode將輸入文本以每三個(gè)字節(jié)為單位進(jìn)行編碼。如果最后剩下的資料少于三個(gè)字節(jié),不夠的部份用零補(bǔ)齊。這三個(gè)字節(jié)共有24個(gè)Bit,以6bit為單位分為4個(gè)組,每個(gè)組以十進(jìn)制來(lái)
12、表示所出現(xiàn)的數(shù)值只會(huì)落在0到63之間。以所對(duì)應(yīng)值的位置字符代替。它所選擇的可打印字符是:+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64個(gè)字符。跟base64打印字符相比,就是UUencode多一個(gè)“-” 字符,少一個(gè)”/” 字符。源文本:The quick brown fox jumps over the lazy dog編碼后:hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gMLdt64FjNkc+編碼解碼鏈接( HYPERLINK /charsetx
13、xencode t _blank /charsetxxencode)6.UUencode編碼UUencode是一種二進(jìn)制到文字的編碼,最早在unix 郵件系統(tǒng)中使用,全稱:Unix-to-Unix encoding,UUencode將輸入文本以每三個(gè)字節(jié)為單位進(jìn)行編碼,如果最后剩下的資料少于三個(gè)字節(jié),不夠的部份用零補(bǔ)齊。三個(gè)字節(jié)共有24個(gè)Bit,以6-bit為單位分為4個(gè)組,每個(gè)組以十進(jìn)制來(lái)表示所出現(xiàn)的字節(jié)的數(shù)值。這個(gè)數(shù)值只會(huì)落在0到63之間。然后將每個(gè)數(shù)加上32,所產(chǎn)生的結(jié)果剛好落在ASCII字符集中可打印字符(32-空白95-底線)的范圍之中。源文本:The quick brown fox
14、 jumps over the lazy dog編碼后:M5&AE(%U:6-K(&)R;W=N(&9O!J=6UP from pycipher import Caesar Caesar(key=1).encipher(The quick brown fox jumps over the lazy dog)UIFRVJDLCSPXOGPYKVNQTPWFSUIFMBAZEPH Caesar(key=1).decipher(UIFRVJDLCSPXOGPYKVNQTPWFSUIFMBAZEPH)THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG參考表(這里是向后移位加密,向前
15、移位解密):加密解密鏈接( HYPERLINK /1434/ t _blank /1434/)(這個(gè)網(wǎng)站可以將26種情況一次性列舉出來(lái),比較方便)3.ROT5/13/18/47*(1)介紹*ROT5/13/18/47是一種簡(jiǎn)單的碼元位置順序替換暗碼。此類編碼具有可逆性,可以自我解密,主要用于應(yīng)對(duì)快速瀏覽,或者是機(jī)器的讀取。 ROT5 是 rotate by 5 places 的簡(jiǎn)寫(xiě),意思是旋轉(zhuǎn)5個(gè)位置,其它皆同。下面分別說(shuō)說(shuō)它們的編碼方式: ROT5:只對(duì)數(shù)字進(jìn)行編碼,用當(dāng)前數(shù)字往前數(shù)的第5個(gè)數(shù)字替換當(dāng)前數(shù)字,例如當(dāng)前為0,編碼后變成5,當(dāng)前為1,編碼后變成6,以此類推順序循環(huán)。 ROT13:
16、只對(duì)字母進(jìn)行編碼,用當(dāng)前字母往前數(shù)的第13個(gè)字母替換當(dāng)前字母,例如當(dāng)前為A,編碼后變成N,當(dāng)前為B,編碼后變成O,以此類推順序循環(huán)。 ROT18:這是一個(gè)異類,本來(lái)沒(méi)有,它是將ROT5和ROT13組合在一起,為了好稱呼,將其命名為ROT18。 ROT47:對(duì)數(shù)字、字母、常用符號(hào)進(jìn)行編碼,按照它們的ASCII值進(jìn)行位置替換,用當(dāng)前字符ASCII值往前數(shù)的第47位對(duì)應(yīng)字符替換當(dāng)前字符,例如當(dāng)前為小寫(xiě)字母z,編碼后變成大寫(xiě)字母K,當(dāng)前為數(shù)字0,編碼后變成符號(hào)_。用于ROT47編碼的字符其ASCII值范圍是33126,具體可參考ASCII編碼,下面以rot13以例。明文:the quick brown
17、 fox jumps over the lazy dog密文:gur dhvpx oebja sbk whzcf bire gur ynml qbt傳送門(mén)( HYPERLINK /bianma/ROT5-13-18-47.php t _blank /bianma/ROT5-13-18-47.php)4.簡(jiǎn)單替換密碼*(1)介紹*簡(jiǎn)單換位密碼(Simple Substitution Cipher)加密方式是以每個(gè)明文字母被與之唯一對(duì)應(yīng)且不同的字母替換的方式實(shí)現(xiàn)的,它不同于愷撒密碼,因?yàn)槊艽a字母表的字母不是簡(jiǎn)單的移位,而是完全是混亂的。 比如: 明文字母 : abcdefghijklmnopqrs
18、tuvwxyz 明文字母 : phqgiumeaylnofdxjkrcvstzwb明文:the quick brown fox jumps over the lazy dog密文:cei jvaql hkdtf udz yvoxr dsik cei npbw gdm*(2)破解*當(dāng)密文數(shù)據(jù)足夠多時(shí)這種密碼我們可以通過(guò)字頻分析方法破解或其他方法破解,比較好的在線詞頻分析網(wǎng)站 HYPERLINK /index.php t _blank /index.php( HYPERLINK /index.php t _blank /index.php)(翻= =墻),這里推薦一篇通過(guò)爬山算法來(lái)破解簡(jiǎn)單替換密碼
19、文章( HYPERLINK /cryptanalysis/stochastic-searching/cryptanalysis-simple-substitution-cipher/ t _blank /cryptanalysis/stochastic-searching/cryptanalysis-simple-substitution-cipher/),基于文中的算法實(shí)現(xiàn)的工具來(lái)破解示例。密文: pmpafxaikkitprdsikcplifhwceigixkirradfeirdgkipgigudkcekiigpwrpucikceiginasikwduearrxiiqepcceindgmi
20、einpwdfprduppcedoikiqiasafmfddfipfgmdafmfdteiki解密:(ps:score值越小越準(zhǔn)確)密鑰:PHQGIUMEAVLNOFDXBKRCZSTJWY明文: AGAINPIERREWASOVERTAKENBYTHEDEPRESSIONHESODREADEDFORTHREEDAYSAFTERTHEDELIVERYOFHISSPEECHATTHELODGEHELAYONASOFAATHOMERECEIVINGNOONEANDGOINGNOWHERE將明文轉(zhuǎn)換成可讀句子:again pierre was over taken by the depression
21、 he so dreaded for three day safter the delivery of his speech at the lodge he lay on asofa at home receiving no one and going no where5.希爾密碼*(1)介紹*希爾密碼(Hill Cipher)是基于線性代數(shù)多重代換密碼,由Lester S. Hill在1929年發(fā)明。每個(gè)字母轉(zhuǎn)換成26進(jìn)制數(shù)字:A=0, B=1, C=2.Z=25一串字母當(dāng)成n維向量,跟一個(gè)nn的矩陣相乘,再將得出的結(jié)果MOD26。更多參考( HYPERLINK /wiki/Hill_cip
22、her t _blank /wiki/Hill_cipher)*(2)加密*明文:ACT明文對(duì)應(yīng)矩陣:加密密鑰:GYBNQKURP加密矩陣:計(jì)算過(guò)程:密文:FIN*(3)解密*密文:FIN計(jì)算加密矩陣的逆矩陣:解密計(jì)算:明文:ACT至于證明和求逆可以參考線性代數(shù)知識(shí)。*(4)破解*密碼分析一門(mén)破解編碼和密碼的藝術(shù)。當(dāng)我們嘗試去攻破希爾密碼你會(huì)發(fā)現(xiàn)頻率分析實(shí)際上沒(méi)有什么用處,特別在密鑰長(zhǎng)度增多的情況下。對(duì)于較長(zhǎng)的二元矩陣(22的希爾密碼)頻率分析可能可能會(huì)有幫助,但是對(duì)于較短的密文分析是沒(méi)有實(shí)際作用的。這里推薦一篇關(guān)于用已知明文樣本攻擊的方式破解希爾密碼( HYPERLINK /cryptana
23、lysis/stochastic-searching/cryptanalysis-hill-cipher/ t _blank /cryptanalysis/stochastic-searching/cryptanalysis-hill-cipher/)的文章,基礎(chǔ)的希爾密碼用已知明文攻擊( HYPERLINK /wiki/Known-plaintext_attack t _blank /wiki/Known-plaintext_attack)的方式是可攻破的,由于加密完全是線性的,所以攻擊者在截取到部分明文/密文字符對(duì)可以輕松建立一個(gè)線性系統(tǒng),輕松搞定希爾密碼,如果不能完全確定線性系統(tǒng),那么只
24、需要添加部分明文/密文對(duì)即可。已知明文攻擊時(shí)最好的方式去破解寫(xiě)入密碼,如果明文一無(wú)所知,那就進(jìn)行推測(cè)猜出部分明文。基于已知明文樣本攻擊的方式破解希爾密碼的算法的實(shí)現(xiàn)工具破解示例:密文: XUKEXWSLZJUAXUNKIGWFSOZRAWURORKXAOSLHROBXBTKCMUWDVPTFBLMKEFVWMUXTVTWUIDDJVZKBRMCWOIWYDXMLUFPVSHAGSVWUFWORCWUIDUJCNVTTBERTUNOJUZHVTWKORSVRZSVVFSQXOCMUWPYTRLGBMCYPOJCLRIYTVFCCMUWUFPOXCNMCIWMSKPXEDLYIQKDJWIWCJU
25、MVRCJUMVRKXWURKPSEEIWZVXULEIOETOOFWKBIUXPXUGOWLFPWUSCH解密:解密腳本實(shí)例( HYPERLINK /ctf/learning/136.html t _blank /ctf/learning/136.html)在線加解密傳送門(mén)( HYPERLINK /ciphers/hill-cipher/ t _blank /ciphers/hill-cipher/)6.豬圈密碼*(1)介紹*豬圈密碼(Pigpen Cipher或稱九宮格密碼、朱高密碼、共濟(jì)會(huì)密碼或共濟(jì)會(huì)員密碼),是一種以格子為基礎(chǔ)的簡(jiǎn)單替代式密碼。更多參考( HYPERLINK /wiki
26、/Pigpen_cipher t _blank /wiki/Pigpen_cipher)明文字母和對(duì)應(yīng)密文:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG密文:在線加密傳送門(mén)( HYPERLINK /The_Black_Chamber/pigpen.html t _blank /The_Black_Chamber/pigpen.html)*(2)變種*圣堂武士密碼(Templar Cipher)是共濟(jì)會(huì)的“豬圈密碼”的一個(gè)變種,一直被共濟(jì)會(huì)圣殿騎士用。明文字母和對(duì)應(yīng)密文:*(3)其他變種*明文字母和對(duì)應(yīng)密文:明文字母和對(duì)應(yīng)密文:明文字母和對(duì)應(yīng)密文:
27、7.波利比奧斯方陣密碼*(1)介紹*波利比奧斯方陣密碼(Polybius Square Cipher或稱波利比奧斯棋盤(pán))是棋盤(pán)密碼的一種,是利用波利比奧斯方陣進(jìn)行加密的密碼方式,簡(jiǎn)單的來(lái)說(shuō)就是把字母排列好,用坐標(biāo)(行列)的形式表現(xiàn)出來(lái)。字母是密文,明文便是字母的坐標(biāo)。更多參考( HYPERLINK /wiki/Polybius_square t _blank /wiki/Polybius_square)常見(jiàn)的排布方式:加密實(shí)例:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG密文:442315 4145241325 1242345233 213453
28、 2445323543 442315 31115554 1434228.夏多密碼(曲折加密)*(1)介紹*夏多密碼是作者麥克斯韋格蘭特在中篇小說(shuō)死亡之鏈塑造夏多這一英雄人物中所自創(chuàng)的密碼,如下圖所示: 注意,在以上所示的字母表密鑰的底部,列有四個(gè)附加符號(hào)1,2,3,4.他們可以放在密文中的任何地方。每個(gè)附加符號(hào)指示,如何轉(zhuǎn)動(dòng)寫(xiě)有密文的紙張,再進(jìn)行后續(xù)的加密或解密操作,直到出現(xiàn)另一個(gè)附加符號(hào)??梢园衙總€(gè)附加符號(hào)中的那根線看作是指示針,它指示了紙張的上端朝上,朝右,朝下,朝左。比如說(shuō):如果出現(xiàn)符號(hào)3,那么紙張就應(yīng)該轉(zhuǎn)動(dòng)180度,使其上端朝下; 符號(hào)2表示紙張上端朝右,依次類推。源文本:I AM I
29、N DANGER SEND HELP(我有危險(xiǎn),速來(lái)增援)密文:9.普萊菲爾密碼普萊菲爾密碼(Playfair Cipher)是第一種用于實(shí)際的雙字替換密碼,用雙字加密取代了簡(jiǎn)單代換密碼的單字加密,很明顯這樣使得密文更難破譯,因?yàn)槭褂煤?jiǎn)單替換密碼的頻率分析基本沒(méi)有什么作用,雖然頻率分析,通常仍然可以進(jìn)行,但是有2525=625種可能而不是25種可能,可以分為三個(gè)步驟,即編制密碼表、整理明文、編寫(xiě)譯文,下面我們以明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG和密鑰CULTURE為例來(lái)講解。普萊菲爾密碼又稱為單方密碼(Single Cipher)之后又
30、出現(xiàn)它的升級(jí)版Double Playfair,也就是二方密碼( HYPERLINK /wiki/Two-square_cipher t _blank /wiki/Two-square_cipher)(Two-square Cipher),在之后又有四方密碼(Four-square Cipher)*(1)編制密碼表*1.整理密鑰字母C U L T U R E,去掉后面重復(fù)的字母得到:C U L T R E2.用上一步得到的字母自上而下來(lái)填補(bǔ)5乘5方表的縱列(也可橫排),之后的空白按照相同的順序用字母表中剩余的字母依次填補(bǔ)完整,得到如下的方格: 這一步需要注意的要點(diǎn):整理密鑰字母時(shí),如果出現(xiàn)Z,則
31、需要去除,因?yàn)樵谟⑽睦颶的使用頻率最低,相應(yīng)的如果是德文,則需將I與J當(dāng)作一個(gè)字母來(lái)看待,而法語(yǔ)則去掉W或K。*(2)整理明文*我們要遵循的原則是“兩個(gè)一組”,得到是若干個(gè)兩兩成對(duì)的字母段,用到的是明文THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG與字母X:1.將明文兩兩一組按順序排開(kāi),得到:TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO G2.對(duì)于末尾的單個(gè)字母要加上一個(gè)X使之成對(duì):TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO GX 這一步需要
32、注意的要點(diǎn):對(duì)于相連字母相同者,每個(gè)后面都需要加X(jué),例如TOMORROW,需要寫(xiě)成:TO MO RX RX OW。*(3)編寫(xiě)密文*我們要得到的密文,當(dāng)然,對(duì)于每個(gè)字母對(duì),要嚴(yán)格遵循如下的原則: 1.如果兩個(gè)字母在同一行則要用它右鄰的字母替換,如果已在最右邊,則用該行最左邊的替換,如明文為CE,依據(jù)上表,應(yīng)替換為EG; 2.如果兩個(gè)字母在同一列則要用它下邊的字母替換,如果已在最下邊,則用該行最上邊的替換,如明文為OQ,依據(jù)上表,應(yīng)替換為PS; 3.如果兩個(gè)字母在不同的行或列,則應(yīng)在密碼表中找兩個(gè)字母使四個(gè)字母組成一個(gè)矩形,明文占據(jù)兩個(gè)頂點(diǎn),需用另外兩個(gè)頂點(diǎn)的字母替換,如明文為HX,可以替換為W
33、I/J或I/JW(下面的例子將按照橫向替換原則即同行優(yōu)先)。按照上述原則,將明文TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO GX加以轉(zhuǎn)換得到KU ND LH GT LF WU ES PW LH SI/J NP CG CR AG BU VZ QA I/JV(/表示或者,不過(guò)一般用I不用J,所以分析密文時(shí)你看25個(gè)字母都有而只差一個(gè)字母沒(méi)有用到可以考慮一下這種加密方式)將得到的字母改為大寫(xiě)并五個(gè)一組列好,得到密文KUNDL HGTLF WUESP WLHSI NPCGC RAGBU VZQAI V。加密解密傳送門(mén)( HYPERLINK /c
34、iphers/classical-era/playfair/ t _blank /ciphers/classical-era/playfair/)(ps:這里加解密是橫向編制密碼表)加密解密實(shí)例(ps:這里加解密也是橫向編制密碼表): from pycipher import PlayfairPlayfair(CULTREABDFGHIKMNOPQSVWXYZ).encipher(THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG)UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIVPlayfair(CULTREABDFGHIKMNOPQ
35、SVWXYZ).decipher(UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV)THEQUICKBROWNFOXIUMPSOVERTHELAZYDOGX10.維吉尼亞密碼*(1)介紹*維吉尼亞密碼(Vigenre Cipher)是在單一愷撒密碼的基礎(chǔ)上擴(kuò)展出多表代換密碼,根據(jù)密鑰(當(dāng)密鑰長(zhǎng)度小于明文長(zhǎng)度時(shí)可以循環(huán)使用)來(lái)決定用哪一行的密表來(lái)進(jìn)行替換,以此來(lái)對(duì)抗字頻統(tǒng)計(jì),更多參考( HYPERLINK /wiki/Vigen%C3%A8re_cipher t _blank /wiki/Vigen%C3%A8re_cipher)。密表:明文:THE QUICK BROW
36、N FOX JUMPS OVER THE LAZY DOG密鑰(循環(huán)使用,密鑰越長(zhǎng)相對(duì)破解難度越大):CULTURE加密過(guò)程:如果第一行為明文字母,第一列為密鑰字母,那么明文字母T列和密鑰字母C行的交點(diǎn)就是密文字母V,以此類推。密文:VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK*(2)已知密鑰加解密* from pycipher import VigenereVigenere(CULTURE).encipher(THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG)VBPJOZGMVCHQEJQRUNGGWQPPKNY
37、INUKRXFKVigenere(CULTURE).decipher(VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK)THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG在線加密解密傳送門(mén)( HYPERLINK /2468/ t _blank /2468/)*(3)未知密鑰破解*可以參考維吉尼亞密碼分析( HYPERLINK /cryptanalysis/stochastic-searching/cryptanalysis-vigenere-cipher/ t _blank /cryptanalysis/stochastic-searching/cry
38、ptanalysis-vigenere-cipher/)這篇文章,破解維吉尼亞密碼第一步是確定密鑰長(zhǎng)度,維吉尼亞密碼分析這篇文章里介紹了使用重合指數(shù)( HYPERLINK /wiki/Index_of_coincidence t _blank /wiki/Index_of_coincidence)算法來(lái)確定密鑰長(zhǎng)度,在確定密鑰長(zhǎng)度后就可以嘗試確定密鑰,通常我們可以使用卡方檢驗(yàn)( HYPERLINK /wiki/Chi-squared_test t _blank /wiki/Chi-squared_test)來(lái)找到每個(gè)字母的偏移量,基于維吉尼亞密碼分析一文中的算法實(shí)現(xiàn)的工具破解示例。密文:kiq
39、pbkxspshwehospzqhoinlgapp解密:(ps:結(jié)合左邊的值,密鑰以及解出明文可以確定kien 5或者klen 10為準(zhǔn)確的結(jié)果)明文:DEFEND THE EAST WALL OF THE CASTLE*(4)變種*有幾種密碼和維吉尼亞密碼相似,格羅斯費(fèi)爾德密碼(Gronsfeld cipher)實(shí)際上和維吉尼亞密碼相同,除了使用了數(shù)字來(lái)代替字母以外沒(méi)有什么區(qū)別。數(shù)字可以選擇一種數(shù)列,如斐波那契數(shù)列,或者一些其他的偽隨機(jī)序列。格羅斯費(fèi)爾德密碼密碼分析過(guò)程和維吉尼亞密碼大同小異,不過(guò),自動(dòng)密鑰密碼不能使用卡西斯基算法( HYPERLINK /question/a0a110842
40、3f63d10dbbf0c3e1bfdf3b3.html t _blank /question/a0a1108423f63d10dbbf0c3e1bfdf3b3.html)(kasiski)來(lái)破譯,因?yàn)樽詣?dòng)密鑰密碼的密鑰不重復(fù)循環(huán)使用,破譯自動(dòng)密鑰密碼最好的方法的就是從密文不斷嘗試和猜測(cè)其中明文或密鑰的一部分。from pycipher import GronsfeldGronsfeld(2,20,11,45,20,43,4).encipher(THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG)VBPJOZGMVCHQEJQRUNGGWQPPKNYINUK
41、RXFKGronsfeld(2,20,11,45,20,43,4).decipher(VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK)THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG在線加解密傳送門(mén)( HYPERLINK /tools/cipher/gronsfeld.php t _blank /tools/cipher/gronsfeld.php)11.自動(dòng)密鑰密碼*(1)介紹*自動(dòng)密鑰密碼(Autokey Cipher)是多表替換密碼,與維吉尼亞密碼密切相關(guān),但使用不同的方法生成密鑰,通常來(lái)說(shuō)要比維吉尼亞密碼更安全。自動(dòng)密鑰密碼主要有兩種,關(guān)鍵
42、詞自動(dòng)密鑰密碼和原文自動(dòng)密鑰密碼.下面我們以關(guān)鍵詞自動(dòng)密鑰為例:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG關(guān)鍵詞:CULTURE自動(dòng)生成密鑰:CULTURE THE QUICK BROWN FOX JUMPS OVER THE接下來(lái)的加密過(guò)程和維吉尼亞密碼類似,從密表可得:密文:VBP JOZGD IVEQV HYY AIICX CSNL FWW ZVDP WVK*(2)已知關(guān)鍵詞加解密* from pycipher import AutokeyAutokey(CULTURE).encipher(THE QUICK BROWN FOX JUMP
43、S OVER THE LAZY DOG)VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVKAutokey(CULTURE).decipher(VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK)THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG在線加解密傳送門(mén)( HYPERLINK /ciphers/classical-era/autokey/ t _blank /ciphers/classical-era/autokey/)*(3)未知關(guān)鍵詞破解*推薦去看這篇自動(dòng)密鑰密碼分析文章( HYPERLINK /cryptanalysis/
44、stochastic-searching/cryptanalysis-autokey-cipher/ t _blank /cryptanalysis/stochastic-searching/cryptanalysis-autokey-cipher/),基于文中的算法實(shí)現(xiàn)的工具來(lái)破解示例。密文: isjiqymdebvuzrvwhmvysibugzhyinmiyeiklcvioimbninyksmmnjmgalvimlhspjxmgfiraqlhjcpvolqmnyynhpdetoxemgnoxl解密(ps:從klen 13可以看出使用的關(guān)鍵詞為FORTIFICATION)明文: DESPIT
45、EBEINGMORESECURETHANTHEVIGENERECIPHERTHEAUTOKEYCIPHERISSTILLVERYEASYTOBREAKUSINGAUTOMATEDMETHODS將明文轉(zhuǎn)換成可讀句子:despite being more secure than the vigenere cipher the autokey cipher is still very easy to break using automated methods12.博福特密碼*(1)介紹*博福特密碼(Beaufort Cipher),是一種類似于維吉尼亞密碼的代換密碼,由弗朗西斯蒲福(Francis
46、Beaufort)發(fā)明。它最知名的應(yīng)用是Hagelin M-209密碼機(jī)。博福特密碼屬于對(duì)等加密,即加密演算法與解密演算法相同。明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG密鑰(循環(huán)使用,密鑰越長(zhǎng)相對(duì)破解難度越大):CULTURE加密過(guò)程:如果第一行為明文字母,第一列為密文字母,那么沿明文字母T列出現(xiàn)密鑰字母C的行號(hào)就是密文字母J,以此類推。密文:JNH DAJCS TUFYE ZOX CZICM OZHC BKA RUMV RDY*(2)已知密鑰加解密* from pycipher import BeaufortBeaufort(CULTURE
47、).encipher(THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG)JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDYBeaufort(CULTURE).decipher(JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY)THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG在線加解密傳送門(mén)( HYPERLINK /ciphers/classical-era/beaufort/ t _blank /ciphers/classical-era/beaufort/)13.滾動(dòng)密鑰密碼*(1)介紹*滾
48、動(dòng)密鑰密碼(Running Key Cipher)和維吉尼亞密碼有著相同的加密機(jī)制,區(qū)別是密鑰的選取,維吉尼亞使用的密鑰簡(jiǎn)短,而且重復(fù)循環(huán)使用,與之相反,滾動(dòng)密鑰密碼使用很長(zhǎng)的密鑰,比如引用一本書(shū)作為密鑰。這樣做的目的是不重復(fù)循環(huán)使用密鑰,使密文更難破譯,盡管如此,滾動(dòng)密鑰密碼還是可以被攻破,因?yàn)橛嘘P(guān)于密鑰和明文的統(tǒng)計(jì)分析模式可供利用,如果滾動(dòng)密鑰密碼使用統(tǒng)計(jì)上的隨機(jī)密鑰來(lái)源,那么理論上是不可破譯的,因?yàn)槿魏慰赡芏伎梢猿蔀槊荑€,并且所有的可能性都是相等的。明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG密鑰:選取C語(yǔ)言編程(1978版)第63頁(yè)第1行
49、errors can occur in several places. A label has.,去掉非字母部分作為密鑰(實(shí)際選取的密鑰很長(zhǎng),長(zhǎng)度至少不小于明文長(zhǎng)度)。加密過(guò)程:加密過(guò)程和維吉尼亞密碼加密過(guò)程相同密文:XYV ELAEK OFQYH WWK BYHTJ OGTC TJI DAK YESR已知密鑰在線加解密傳送門(mén)( HYPERLINK /ciphers/classical-era/running-key/ t _blank /ciphers/classical-era/running-key/)14.Porta密碼*(1)介紹*Porta密碼(Porta Cipher)是一個(gè)由意
50、大利那不勒斯的醫(yī)生Giovanni Battista della Porta發(fā)明的多表代換密碼,Porta密碼具有加密解密過(guò)程的是相同的特點(diǎn)。密表: KEYS| A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | A,B | N O P Q R S T U V W X Y Z A B C D E F G H I J K L M C,D | O P Q R S T U V W X Y Z N M A B C D E F G H I J K L E, F | P Q R S T U V W X Y Z N O L M A B C D E F
51、G H I J K G,H | Q R S T U V W X Y Z N O P K L M A B C D E F G H I J I, J | R S T U V W X Y Z N O P Q J K L M A B C D E F G H I K, L | S T U V W X Y Z N O P Q R I J K L M A B C D E F G H M,N | T U V W X Y Z N O P Q R S H I J K L M A B C D E F G O, P | U V W X Y Z N O P Q R S T G H I J K L M A B C D E
52、 F Q, R | V W X Y Z N O P Q R S T U F G H I J K L M A B C D E S, T | W X Y Z N O P Q R S T U V E F G H I J K L M A B C D U, V | X Y Z N O P Q R S T U V W D E F G H I J K L M A B C W,X | Y Z N O P Q R S T U V W X C D E F G H I J K L M A B Y,Z | Z N O P Q R S T U V W X Y B C D E F G H I J K L M A明文:TH
53、E QUICK BROWN FOX JUMPS OVER THE LAZY DOG密鑰(循環(huán)使用,密鑰越長(zhǎng)相對(duì)破解難度越大):CULTURE加密過(guò)程:明文字母T列與密鑰字母C行交點(diǎn)就是密文字母F,以此類推。密文:FRW HKQRY YMFMF UAA OLWHD ALWI JPT ZXHC NGV已知密鑰在線加解密傳送門(mén)( HYPERLINK /ciphers/classical-era/porta/ t _blank /ciphers/classical-era/porta/)*(2)破解*Porta密碼可以被以維吉尼亞密碼( HYPERLINK /cryptanalysis/stochas
54、tic-searching/cryptanalysis-vigenere-cipher-part-2/ t _blank /cryptanalysis/stochastic-searching/cryptanalysis-vigenere-cipher-part-2/)破解相類似方式進(jìn)行自動(dòng)攻破,破解Porta密碼第一步是先確定密鑰長(zhǎng)度,這里推薦一篇關(guān)于使用重合指數(shù)算法( HYPERLINK /wiki/Index_of_coincidence t _blank /wiki/Index_of_coincidence)確定為維吉尼亞密鑰長(zhǎng)度文章( HYPERLINK /cryptanalysis
55、/stochastic-searching/cryptanalysis-vigenere-cipher/ t _blank /cryptanalysis/stochastic-searching/cryptanalysis-vigenere-cipher/)。15.同音替換密碼*(1)介紹*同音替換密碼(Homophonic Substitution Cipher)是單字母可以被其他幾種密文字母同時(shí)替換的密碼,通常要比標(biāo)準(zhǔn)替換密碼破解更加困難,破解標(biāo)準(zhǔn)替換密碼最簡(jiǎn)單的方法就是分析字母出現(xiàn)頻率,通常在英語(yǔ)中字母E(或T)出現(xiàn)的頻率是最高的,如果我們?cè)试S字母E可以同時(shí)被3種不同字符代替,那么就不能
56、還是以普通字母的頻率來(lái)分析破解,如果允許可代替字符越多,那么密文就會(huì)更難破譯。常見(jiàn)代換規(guī)則表:明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG密文(其中一種):6CZ KOVST XJ0MA EQY IOGL4 0W1J UC7 P9NB F0H*(2)破解*如果同音替換密碼的同音詞個(gè)數(shù)很多,那么破解它難度很大,通常的方法采取類似破解替換密碼的爬山算法,除了找到一個(gè)明文字母映射幾個(gè)字符之外,我們還需要確定映射了那些字符,可以嘗試2層嵌套爬山算法( HYPERLINK /faculty/stamp/RUA/homophonic.pdf t _blank
57、 /faculty/stamp/RUA/homophonic.pdf)來(lái)破解,外層確定映射的數(shù)量,內(nèi)層確定映射字符。16.仿射密碼*(1)介紹*仿射密碼(Affine Cipher)是一種單表代換密碼,字母表中的每個(gè)字母相應(yīng)的值使用一個(gè)簡(jiǎn)單的數(shù)學(xué)函數(shù)映射到對(duì)應(yīng)的數(shù)值,再把對(duì)應(yīng)數(shù)值轉(zhuǎn)換成字母。這個(gè)公式意味著每個(gè)字母加密都會(huì)返回一個(gè)相同的字母,意義著這種加密方式本質(zhì)上是一種標(biāo)準(zhǔn)替代密碼。因此,它具有所有替代密碼的弱點(diǎn)。每一個(gè)字母都是通過(guò)函數(shù)(ax + b)mod m加密,其中B是位移量,為了保證仿射密碼的可逆性,a和m需要滿足gcd(a , m)=1,一般m為設(shè)置為26。更多參考( HYPERLI
58、NK /wiki/Affine_cipher t _blank /wiki/Affine_cipher)常見(jiàn)的字母對(duì)應(yīng)關(guān)系:下面我們以E(x) = (5x + 8) mod 26函數(shù)為例子至于解密我們知道即可得出解密結(jié)果以E(x) = (5x + 8) mod 26加密,通過(guò)計(jì)算可得D(x)=21(x - 8) mod 26,這樣便可以得到明文??蓞⒖嫉腜ython腳本加解密傳送門(mén)( HYPERLINK /ciphers/classical-era/affine/ t _blank /ciphers/classical-era/affine/)17.培根密碼*(1)介紹*培根密碼(Baconi
59、an Cipher)是一種替換密碼,每個(gè)明文字母被一個(gè)由5字符組成的序列替換,最初的加密方式就是由A和B組成序列替換明文(所以你當(dāng)然也可以用別的字母),比如字母D替換成aaabb,以下是全部的對(duì)應(yīng)關(guān)系(另一種對(duì)于關(guān)系是每個(gè)字母都有唯一對(duì)應(yīng)序列,I和J與U/V各自都有不同對(duì)應(yīng)序列): A = aaaaa I/J = abaaa R = baaaa B = aaaab K = abaab S = baaab C = aaaba L = ababa T = baaba D = aaabbM = ababb U/V = baabb E = aabaaN = abbaa W = babaa F = aa
60、babO = abbab X = babab G = aabbaP = abbba Y = babba H = aabbbQ = abbbb Z = babbb明文:T H E F O X密文:baaba aabbb aabaa aabab abbab babab加解密傳送門(mén)( HYPERLINK /tools/cipher/baconian.php t _blank /tools/cipher/baconian.php)18.ADFGX和ADFGVX密碼*(1)ADFGX密碼*ADFGX密碼(ADFGX Cipher)是結(jié)合了改良過(guò)的Polybius方格替代密碼與單行換位密碼的矩陣加密密碼,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新型機(jī)械加工合同范本
- 消防水箱采購(gòu)合同范本
- 工程機(jī)械租賃合同
- 農(nóng)莊承包合同
- 裝修泥工合同模板
- 影視制作承包合同范本
- 租賃合同銑刨機(jī)1
- 車輛租賃服務(wù)合同
- 物業(yè)管理的咨詢與顧問(wèn)服務(wù)
- 衣服租賃合同范本
- 子宮畸形的超聲診斷
- 2024年1月高考適應(yīng)性測(cè)試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
- JT-T-1004.1-2015城市軌道交通行車調(diào)度員技能和素質(zhì)要求第1部分:地鐵輕軌和單軌
- (高清版)WST 408-2024 定量檢驗(yàn)程序分析性能驗(yàn)證指南
- (正式版)JBT 11270-2024 立體倉(cāng)庫(kù)組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- DB11∕T 2035-2022 供暖民用建筑室溫?zé)o線采集系統(tǒng)技術(shù)要求
- 《復(fù)旦大學(xué)》課件
- 針灸與按摩綜合療法
- Photoshop 2022從入門(mén)到精通
- T-GDWJ 013-2022 廣東省健康醫(yī)療數(shù)據(jù)安全分類分級(jí)管理技術(shù)規(guī)范
- DB43-T 2775-2023 花櫚木播種育苗技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論