【文章內(nèi)容簡介】
h at the lodge he lay on asofa at home receiving no one and going no where**〔1〕介紹**希爾密碼(Hill Cipher)是基于線性代數(shù)多重代換密碼,由Lester S. Hill在1929年創(chuàng)造。每個字母轉(zhuǎn)換成26進制數(shù)字:A=0, B=1, C=2...Z=25一串字母當(dāng)成n維向量,跟一個nn的矩陣相乘,再將得出的結(jié)果MOD26。更多[參考]()**〔2〕加密**明文:`ACT`明文對應(yīng)矩陣:加密密鑰:`GYBNQKURP`加密矩陣:計算過程:密文:`FIN`**〔3〕解密**密文:`FIN`計算加密矩陣的逆矩陣:解密計算:明文:`ACT`至于證明和求逆可以參考線性代數(shù)知識。**〔4〕破解**密碼分析一門破解編碼和密碼的藝術(shù)。當(dāng)我們嘗試去攻破希爾密碼你會發(fā)現(xiàn)頻率分析實際上沒有什么用處,特別在密鑰長度增多的情況下。對于較長的二元矩陣〔22的希爾密碼〕頻率分析可能可能會有幫助,但是對于較短的密文分析是沒有實際作用的。這里推薦一篇關(guān)于用[明文樣本攻擊的方式破解希爾密碼]()的文章,根底的希爾密碼用[明文攻擊]()的方式是可攻破的,由于加密完全是線性的,所以攻擊者在截取到局部明文/密文字符對可以輕松建立一個線性系統(tǒng),輕松搞定希爾密碼,如果不能完全確定線性系統(tǒng),那么只需要添加局部明文/密文對即可。明文攻擊時最好的方式去破解寫入密碼,如果明文一無所知,那就進行推測猜出局部明文?;诿魑臉颖竟舻姆绞狡平庀柮艽a的算法的實現(xiàn)工具破解例如:密文: XUKEXWSLZJUAXUNKIGWFSOZRAWURORKXAOSLHROBXBTKCMUWDVPTFBLMKEFVWMUXTVTWUIDDJVZKBRMCWOIWYDXMLUFPVSHAGSVWUFWORCWUIDUJCNVTTBERTUNOJUZHVTWKORSVRZSVVFSQXOCMUWPYTRLGBMCYPOJCLRIYTVFCCMUWUFPOXCNMCIWMSKPXEDLYIQKDJWIWCJUMVRCJUMVRKXWURKPSEEIWZVXULEIOETOOFWKBIUXPXUGOWLFPWUSCH解密:解密[腳本實例]()在線加解密[傳送門]()**〔1〕介紹**豬圈密碼(Pigpen Cipher或稱九宮格密碼、朱高密碼、共濟會密碼或共濟會員密碼),是一種以格子為根底的簡單替代式密碼。更多[參考]()明文字母和對應(yīng)密文:明文:`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`密文:在線加密[傳送門]()**〔2〕變種**圣堂武士密碼(Templar Cipher)是共濟會的“豬圈密碼〞的一個變種,一直被共濟會圣殿騎士用。明文字母和對應(yīng)密文:**〔3〕其他變種**明文字母和對應(yīng)密文:明文字母和對應(yīng)密文:明文字母和對應(yīng)密文:**〔1〕介紹**波利比奧斯方陣密碼〔Polybius Square Cipher或稱波利比奧斯棋盤〕是棋盤密碼的一種,是利用波利比奧斯方陣進行加密的密碼方式,簡單的來說就是把字母排列好,用坐標(biāo)(行列)的形式表現(xiàn)出來。字母是密文,明文便是字母的坐標(biāo)。更多[參考]()常見的排布方式:加密實例:明文:`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`密文:`442315 4145241325 1242345233 213453 2445323543 442315 31115554 143422`(曲折加密)**〔1〕介紹**夏多密碼是作者麥克斯韋格蘭特在中篇小說?死亡之鏈?塑造夏多這一英雄人物中所自創(chuàng)的密碼,如下列圖所示: 注意,在以上所示的字母表密鑰的底部,列有四個附加符號1,2,3。每個附加符號指示,如何轉(zhuǎn)動寫有密文的紙張,再進行后續(xù)的加密或解密操作,直到出現(xiàn)另一個附加符號??梢园衙總€附加符號中的那根線看作是指示針,它指示了紙張的上端朝上,朝右,朝下,朝左。比方說:如果出現(xiàn)符號3,那么紙張就應(yīng)該轉(zhuǎn)動180度,使其上端朝下; 符號2表示紙張上端朝右,依次類推。源文本:`I AM IN DANGER SEND HELP(我有危險,速來增援)`密文:普萊菲爾密碼(Playfair Cipher)是第一種用于實際的雙字替換密碼,用雙字加密取代了簡單代換密碼的單字加密,很明顯這樣使得密文更難破譯,因為使用簡單替換密碼的頻率分析根本沒有什么作用,雖然頻率分析,通常仍然可以進行,但是有2525=625種可能而不是25種可能,可以分為三個步驟,即編制密碼表、整理明文、編寫譯文,下面我們以明文:`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`和密鑰`CULTURE`為例來講解。普萊菲爾密碼又稱為單方密碼(Single Cipher)之后又出現(xiàn)它的升級版Double Playfair,也就是[二方密碼]()(Twosquare Cipher),在之后又有四方密碼(Foursquare Cipher)**(1)編制密碼表**`C U L T U R E`,去掉后面重復(fù)的字母得到:`C U L T R E`〔也可橫排〕,之后的空白按照相同的順序用字母表中剩余的字母依次填補完整,得到如下的方格: 這一步需要注意的要點:整理密鑰字母時,如果出現(xiàn)Z,那么需要去除,因為在英文里Z的使用頻率最低,相應(yīng)的如果是德文,那么需將I與J當(dāng)作一個字母來看待,而法語那么去掉W或K。**(2)整理明文**我們要遵循的原那么是“兩個一組〞,得到是假設(shè)干個兩兩成對的字母段,用到的是明文`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`與字母`X`:,得到:`TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO G``X`使之成對:`TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO GX` 這一步需要注意的要點:對于相連字母相同者,每個后面都需要加`X`,例如`TOMORROW`,需要寫成:`TO MO RX RX OW`。**(3)編寫密文**我們要得到的密文,當(dāng)然,對于每個字母對,要嚴(yán)格遵循如下的原那么: ,如果已在最右邊,那么用該行最左邊的替換,如明文為`CE`,依據(jù)上表,應(yīng)替換為`EG`; ,如果已在最下邊,那么用該行最上邊的替換,如明文為`OQ`,依據(jù)上表,應(yīng)替換為`PS`; ,那么應(yīng)在密碼表中找兩個字母使四個字母組成一個矩形,明文占據(jù)兩個頂點,需用另外兩個頂點的字母替換,如明文為`HX`,可以替換為`WI/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`〔/表示或者,不過一般用I不用J,所以分析密文時你看25個字母都有而只差一個字母沒有用到可以考慮一下這種加密方式〕將得到的字母改為大寫并五個一組列好,得到密文`KUNDL HGTLF WUESP WLHSI NPCGC RAGBU VZQAI V`。加密解密[傳送門]()(ps:這里加解密是橫向編制密碼表)加密解密實例(ps:這里加解密也是橫向編制密碼表): from pycipher import PlayfairPlayfair(39。CULTREABDFGHIKMNOPQSVWXYZ39。).encipher(39。THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG39。)39。UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV39。Playfair(39。CULTREABDFGHIKMNOPQSVWXYZ39。).decipher(39。UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV39。)39。THEQUICKBROWNFOXIUMPSOVERTHELAZYDOGX39。**〔1〕介紹**維吉尼亞密碼(Vigen232。re Cipher)是在單一愷撒密碼的根底上擴展出多表代換密碼,根據(jù)密鑰(當(dāng)密鑰長度小于明文長度時可以循環(huán)使用)來決定用哪一行的密表來進行替換,以此來對抗字頻統(tǒng)計,更多[參考]()。密表:明文:`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`密鑰(循環(huán)使用,密鑰越長相對破解難度越大):`CULTURE`加密過程:如果第一行為明文字母,第一列為密鑰字母,那么明文字母39。T39。列和密鑰字母39。C39。行的交點就是密文字母39。V39。,以此類推。密文:`VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK`**〔2〕密鑰加解密** from pycipher import VigenereVigenere(39。CULTURE39。).encipher(39。THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG39。)39。VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK39。Vigenere(39。CULTURE39。).decipher(39。VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK39。)39。THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG39。在線加密解密[傳送門]( ://planetcalc /2468/)**〔3〕未知密鑰破解**可以參考[維吉尼亞密碼分析]()這篇文章,破解維吉尼亞密碼第一步是確定密鑰長度,維吉尼亞密碼分析這篇文章里介紹了使用[重合指數(shù)]()算法來確定密鑰長度,在確定密鑰長度后就可以嘗試確定密鑰,通常我們可以使用[卡方檢驗]()來找到每個字母的偏移量,基于維吉尼亞密碼分析一文中的算法實現(xiàn)的工具破解例如。密文:`kiqpbkxspshwehospzqhoinlgapp`解密:(ps:結(jié)合左邊的值,密鑰以及解出明文可以確定kien 5或者klen 10為準(zhǔn)確的結(jié)果)明文:`DEFEND THE EAST WALL OF THE CASTLE`**〔4〕變種**有幾種密碼和維吉尼亞密碼相似,格羅斯費爾德密碼(Gronsfeld cipher)實際上和維吉尼亞密碼相同,除了使用了數(shù)字來代替字母以外沒有什么區(qū)別。數(shù)字可以選擇一種數(shù)列,如斐波那契數(shù)列,或者一些其他的偽隨機序列。格羅斯費爾德密碼密碼分析過程和維吉尼亞密碼大同小異,不過,自動密鑰密碼不能使用[卡西斯基算法]()(kasiski)來破譯,因為自動密鑰密碼的密鑰不重復(fù)循環(huán)使用,破譯自動密鑰密碼最好的方法的就是從密文不斷嘗試和猜想其中明文或密鑰的一局部。from pycipher import GronsfeldGronsfeld([2,20,11,45,20,43,4]).encipher(39。THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG39。)VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK39。Gronsfeld([2,20,11,45,20,43,4]).decipher(39。VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK39。)THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG39。在線加解密[傳送門]( ://rumkin /tools/cipher/)**〔1〕介紹**自動密鑰密碼(Autokey Cipher)是多表替換密碼,與維吉尼亞密碼密切相關(guān),但使用不同的方法生成密鑰,通常來說要比維吉尼亞密碼更平安。自動密鑰密碼主要有兩種,:明文:`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`關(guān)鍵詞:`CULTURE`自動生成密鑰:`CULTURE THE QUICK BROWN FOX JUMPS OVER THE`接下來的加密過程和維吉尼亞密碼類似,從密表可得:密文:`VBP JOZGD IVEQV HYY AIICX CSNL FWW ZVDP WVK`**〔2〕關(guān)鍵詞加解密** from pycipher import AutokeyAutokey(39。CULTURE39。).encipher(39。THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG39。)39。VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK39。Autokey(39。CULTURE39。).decipher(39。VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK39。)39。THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG39。在線加解密[傳送門]()**〔3〕未知關(guān)鍵詞破解**推薦去看這篇[自動密鑰密碼分析文章](),基于文中的算法實現(xiàn)的工具來破解例如。密文: isjiqymdebvuzrvwhmvysibugzhyinmiyeiklcvioimbninyksmmnjmgalvimlhspjxmgfiraqlhjcpvolqmnyynhpdetoxemgnoxl解密(ps:從klen 13可以看出使用的關(guān)鍵詞為39。FORTIFICATION39。)明文: DESPITEBEINGMORESECURETHANTHEVIGENERECIPHERTHEAUTOKEYCIPHERISSTILLVERYEASYTOBREAKUSINGAUTOMATEDMETHODS將明文轉(zhuǎn)換成可讀句子:despite being more secure than the vigenere cipher the autokey cipher is still very easy to break using automated methods**〔1〕介紹**博福特密碼(Beaufort Cipher),是一種類似于維吉尼亞密碼的代換密碼,由弗朗西斯蒲福(Francis Beaufort)創(chuàng)造。它最知名的應(yīng)用是Hagelin M209密碼機。博福特密碼屬于對等加密,即加密演算法與解密演算法相同。明文:`THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG`密鑰(循環(huán)使用,密鑰越長相對破解難度越大):`CULTURE`加密過程:如果第一行為明文字母,第一列為密文字母,那么沿明文字母39。T39。列出現(xiàn)密鑰字母39。C39。的行號就是密文字母39。J39。,以此類推。密文:`JNH DAJCS TUFYE ZOX CZICM OZHC BKA RUMV RDY`**〔2〕密鑰加解密** from pycipher import BeaufortBeaufort(39。CULTURE39。).encipher(39。THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG39。)39。JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY39。Beaufort(39。CULTURE39。).decipher(39。JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY39。)39。THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG39。在線加解密[傳送門]()**〔1〕介紹**滾動密鑰密碼(Running Key Cipher)和維吉尼亞密碼有著相同的加密