CTF中Crypty入门必看(密码类,密码学)
常見編碼
ASCII編碼
ASCII碼大致可以分為三部分組成:
第一部分是:ASCII非打印控制字符
第二部分是:ASCII打印字符;
第三部分是:擴展ASCII打印字符。
在線ASCII碼與進制互相轉換
這是ASCII碼表
具體分析鏈接ASCII碼詳解
base64,32,16,編碼
這里我們拿常見的base64來舉例
原理:base64是一種基于64個可打印字符來表示二進制數據的表示方法。由于2的6次方等于64,所以每6個比特為一個單元,對應某個可打印字符。三個字節有24個比特,對應4個base64單元,即3個字節可表示4個可打印字符。它可用來作為電子郵件的傳輸編碼。在base64中的可打印字符包括字母A-Z、a-z、數字0-9,這樣共有62個字符,此外兩個可打印符號在不同系統中而不同。
例如:編碼‘Man'
在此例中,base64算法將3個字符編碼轉為4個字符
base64索引表:
如果要編碼的字節數不能被3整除,最后會多出1個或2個字節,那么可以使用下面的方法進行處理:先使用0字節值在末尾補足,使其能夠被3整除,然后再進行base64的編碼。在編碼后的base64文本后加上一個或兩個“=”號,代表補足的字節數。也就是說,當最后剩余一個八位字節(一個byte)時,最后6位的base64字節塊有四位是0值,最后附加上兩個等號;如果最后剩余兩個八位字節(2byte)時,最后一個6位的base字節塊有兩位是0值,最后附加一個等號
例如:
關于base32:
 base32中只有大寫字母(A-Z)和數字234567
關于base16:
base16中只有數字0-9以及大寫字母ABCDEF
用python3使用base64、base32、base16編碼
base64在線解密
Quoted-printable編碼解碼
在所有郵件處理的各式各樣的編碼中,很多編碼的目的都是通過編碼的手段使得七位字符的郵件協議體系可以傳送八位的二進制文件、雙字節語言等等。Quoted-Printable也是這樣一些編碼中的一個,它的目的同樣是幫助非ASCII編碼的信件傳輸通過SMTP。Quoted-Printable編碼是字符對應的編碼,每個末編碼的二進制字符被編碼成三個字符,即一個等號和一個十六進制的數字,如‘=AB’。
例如:
編碼原理和綜述參考Quoted-printable編碼介紹
編碼解碼鏈接Quoted-Printable在線編碼解密
XXencode編碼
原理:XXencode將輸入文本以每三個字節為單位進行編碼。如果最后剩下的資料少于三個字節,不夠的部分用零補齊。這三個字節共有24個bit,以6bit為單位分為4個組,每個組以十進制來表示所出現的數值只會落在0-63之間。以所對應值的位置字符代替。它所選擇的可打印字符是:+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,一共64個字符。跟base64打印字符相比,就是uuencode多一個‘-’字符,少一個‘/’字符。但是,它里面字符順序與base64完全不一樣。
原文本:The quick brown fox jumps over the lazy dog
編碼后:hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gMLdt64FjNkc+
具體原理與算法參考鏈接
XXencode在線編碼解碼
UUencode編碼
原理:Uuencode將輸入資料以每三個字節為單位進行編碼,如此重復進行。如果最后剩下的資料少于三個字節,不夠的部份用零補齊。這三個字節共有24個Bit,以6-bit為單位分為4個群組,每個群組以十進制來表示所出現的數值只會落在0到63之間。將每個數加上32,所產生的結果剛好落在ASCII字符集中可打印字符(32-空白…95-底線)的范圍之中。每60個編碼輸出(相當于45個輸入字節)將輸出為獨立的一行,每行的開頭會加上長度字符,除了最后一行之外,長度字符都應該是’M'這個ASCII字符(77=32+45),最后一行的長度字符為32+剩下的字節數目這個ASCII字符。如果是一個 0字節那它應該被轉換為0×60而不是0×20,因為(前引用’`')優于 0×20(空格’ ‘)。
?
原文本:You had me at hello
編碼后:366]U(&AA9"!M92!A="!H96QL;P``
具體原理與算法參考鏈接
UUencode在線編碼解碼
URL編碼
原理:url編碼又叫百分號編碼,是統一資源定位(URL)編碼方式。URL地址(常說網址)規定了常用地數字,字母可以直接使用,另外一批作為特殊用戶字符也可以直接用(/,:@等),剩下的其它所有字符必須通過%xx編碼處理。 現在已經成為一種規范了,基本所有程序語言都有這種編碼,如js:有encodeURI、encodeURIComponent,PHP有 urlencode、urldecode等。編碼方法很簡單,在該字節ascii碼的的16進制字符前面加%. 如 空格字符,ascii碼是32,對應16進制是’20’,那么urlencode編碼結果是:%20。
url在線編碼解碼鏈接
Unicode編碼
例如:
原文本:You had me at hello
編碼后:\u0059\u006f\u0075\u0020\u0068\u0061\u0064\u0020\u006d\u0065\u0020\u0061\u0074\u0020\u0068\u0065\u006c\u006c\u006f
Unicode在線編碼解碼鏈接
Escape/Unescape編碼
編碼介紹:Escape/Unescape加密解碼/編碼解碼,又叫%u編碼,從以往經驗看編碼字符串出現有"u",它是unicode編碼,那么Escape編碼采用是那一種unicode實現形式呢。其實是UTF-16BE模式。這樣一來問題非常簡單了。?Escape編碼/加密,就是字符對應UTF-16 16進制表示方式前面加%u。Unescape解碼/解密,就是去掉"%u"后,將16進制字符還原后,由utf-16轉碼到自己目標字符。如:字符“中”,UTF-16BE是:“6d93”,因此Escape是“%u6d93”,反之也一樣!因為目前%字符,常用作URL編碼,所以%u這樣編碼已經逐漸被廢棄了!
Escape/Unescape在線編碼解碼鏈接
HTML實體編碼
HTML ISO-8859-1 參考手冊
HTML在線編碼解碼鏈接
敲擊碼
介紹:敲擊碼(Tap code)是一種以非常簡單的方式對文本信息進行編碼的方法。因該編碼對信息通過使用一系列的點擊聲音來編碼而命名,敲擊碼是基于5×5方格波利比奧斯方陣來實現的,不同點是是用K字母被整合到C中。
敲擊碼表:
摩爾斯電碼(摩斯密碼)
介紹:
摩爾斯電碼(英語:Morse code)是一種時通時斷的信號代碼,通過不同的排列順序來表達不同的英文字母、數字和標點符號。是由美國人艾爾菲德·維爾(Alfred Lewis Vail)與薩繆爾·摩爾斯(Samuel Finley Breese Morse)在1836年發明。
 摩爾斯電碼是一種早期的數字化通信形式,但是它不同于現代只使用0和1兩種狀態的二進制代碼,它的代碼包括五種:
1.點(.)
2.劃(-)
3.每個字符間短的停頓(在點和劃之間的停頓)
4.每個詞之間中等的停頓
5.以及句子之間長的停頓
摩爾斯電碼字母與數字對應表:
例如:
原文本:I LOVE YOU TOO?
加密后:../.-../---/...-/./-.--/---/..-/-/---/---
摩爾斯電碼在線加密解密
在線加密解密鏈接二
md5加密解密
md5百度百科鏈接
md5維基百科鏈接
注意:md5的值范圍在0-9,a-f
推薦幾個好用的md5在線加密解密鏈接
鏈接一
鏈接二
在md5格式正確的情況下,一個網站解不出來,可以換另一個試試!
文本加密
文本加密可以將正常文本內容打亂為不可連讀的文字或符號(漢字 數字 字母 音樂符號 國際音標 盲文 韓文 日文 傣文 彝文 箭頭符號 花朵符號 俄文),換行等格式信息也會被清除,達到加密的作用。在進行文本加密時可以設定一個密碼,這樣只有知道密碼的人才能解密文本。密碼可以是數字、字母和下劃線,最多九位。
原文本:文本加密為漢字
加密后:渤筅苜锫舸擂懶認餒盲尻顓懶哨==
在線文本加密漢字鏈接
?
換位密碼
柵欄密碼
柵欄密碼(Rail-fence Cipher)就是把要加密的明文分成N個一組,然后把每組的第1個字符組合,每組第2個字符組合…每組的第N(最后一個分組可能不足N個)個字符組合,最后把他們全部連接起來就是密文,這里以2欄柵欄加密為例。
?
明文:The quick brown fox jumps over the lazy dog
 去空格:Thequickbrownfoxjumpsoverthelazydog
 分組:Th eq ui ck br ow nf ox ju mp so ve rt he la zy do g
 第一組:Teucbonojmsvrhlzdg
 第二組:hqikrwfxupoeteayo
 密文:Teucbonojmsvrhlzdghqikrwfxupoeteayo
在線柵欄密碼解密鏈接
曲路密碼
曲路密碼(Curve Cipher)是一種換位密碼,需要事先雙方約定密鑰(也就是曲路路徑)。
明文:The quick brown fox jumps over the lazy dog
填入5行7列表(事先約定填充的行列數)
加密的回路線(事先約定填充的行列數)
密文:gesfc inpho dtmwu qoury zejre hbxva lookT
列移位密碼
列移位密碼(Columnar Transposition Cipher)是一種比較簡單,易于實現的換位密碼,通過一個簡單的規則將明文打亂混合成密文。下面我們以明文 The quick brown fox jumps over the lazy dog,密鑰 how are u為例:
填入5行7列表(事先約定填充的行列數,如果明文不能填充完表格可以約定使用某個字母進行填充)
密鑰:how are u
按how are u在字母表中的出現的先后順序進行編號,我們就有a為1,e為2,h為3,o為4,r為5,u為6,w為7,所以先寫出a列,其次e列,以此類推寫出的結果便是密文:
密文:qoury inpho Tkool hbxva uwmtd cfseg erjez
這里提供一個行列數相等的填充規則列移位密碼加解密鏈接
替換密碼
埃特巴什碼
埃特巴什碼(Atbash Cipher)是一種以字母倒序排列作為特殊密鑰的替換加密,也稱也就是下面的對應關系:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
 ZYXWVUTSRQPONMLKJIHGFEDCBA
明文:the quick brown fox jumps over the lazy dog
密文:gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
加解密鏈接
凱撒密碼
凱撒密碼(Caesar Cipher或稱愷撒加密、愷撒變換、變換加密、位移加密)是一種替換加密,明文中的所有字母都在字母表上向后(或向前)按照一個固定數目進行偏移后被替換成密文。例,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推,更多參考鏈接
加密實例:
明文:The quick brown fox jumps over the lazy dog
偏移量:1
密文:Uif rvjdl cspxo gpy kvnqt pwfs uif mbaz eph
加密解密鏈接一(這個網站可以將26種情況一次性列舉出來,比較方便)
加密解密腳本鏈接二(這個腳本把ASCII中可打印字符的所有可能都輸出)
ROT5/13/18/47
ROT5/13/18/47是一種簡單的碼元位置順序替換暗碼。此類編碼具有可逆性,可以自我解密,主要用于應對快速瀏覽,或者是機器的讀取。
ROT5 是 ROTATE BY 5 PLACES 的簡寫,意思是旋轉5個位置,其它皆同。
下面分別說說它們的編碼方式:
ROT5:只對數字進行編碼,用當前數字往前數的第5個數字替換當前數字,例如當前為0,編碼后變成5,當前為1,編碼后變成6,以此類推順序循環。
ROT13:只對字母進行編碼,用當前字母往前數的第13個字母替換當前字母,例如當前為A,編碼后變成N,當前為B,編碼后變成O,以此類推順序循環。
ROT18:這是一個異類,本來沒有,它是將ROT5和ROT13組合在一起,為了好稱呼,將其命名為ROT18。
ROT47:對數字、字母、常用符號進行編碼,按照它們的ASCII值進行位置替換,用當前字符ASCII值往前數的第47位對應字符替換當前字符,例如當前為小寫字母Z,編碼后變成大寫字母K,當前為數字0,編碼后變成符號_。用于ROT47編碼的字符其ASCII值范圍是33-126,具體可參考ASCII編碼,下面以ROT13以例。
明文:the quick brown fox jumps over the lazy dog
 密文:gur dhvpx oebja sbk whzcf bire gur ynml qbt
加密解密腳本鏈接
在線加密解密鏈接
簡單替換密碼(單表代替密碼)
(1)介紹
簡單換位密碼(Simple Substitution Cipher)加密方式是以每個明文字母被與之唯一對應且不同的字母替換的方式實現的,它不同于愷撒密碼,因為密碼字母表的字母不是簡單的移位,而是完全是混亂的。 比如:
 明文字母 : abcdefghijklmnopqrstuvwxyz
 明文字母 : phqgiumeaylnofdxjkrcvstzwb
 明文:the quick brown fox jumps over the lazy dog
 密文:cei jvaql hkdtf udz yvoxr dsik cei npbw gdm
(2)破解
方法一:
當密文數據足夠多時這種密碼我們可以通過字頻分析方法破解或其他方法破解,比較好的在線詞頻分析網站鏈接1+連接2。
例如:
oivqmqgn, yja vibem naarn yi yxbo sqnyab yjqo q zixuea is gaqbn qdi. ykra jqn zira yi baseazy yjqy qeni ko yja ujbqzw rqdqhkoa. yjkn kn vjqy yja uquab saam kn qpixy: gix nxprky q uquab, va backav ky qom ky dayn uxpeknjam. oi oaam yi vqky q rioyj ib yvi xoyke gix naa gixb qbykzea ko yja oafy ujbqzw knnxa, vjao yja ykra jqn zira, va'ee mazkma yi zirukea q oav knnxa sbir yja qbykzean yjqy jqca paao nxprkyyam. yjqy'n pqnkzqeeg ky. qom dbqp gix seqd jaba, zbguyiiiniziieqrkbkdjy?先用鏈接1
接下來就可以從頻率上對密文進行分析了。根據右側的頻率統計,我們可以嘗試對前面四個字母進行替換,在左側的矩形文本框中,在密文對應字符的上面可以填寫解密后的明文,因此,這里得到的密文到明文的映射為:A-e, Y-t, Q-a, I-o
在英文單詞構詞方面,以密文第二個單詞YJA為例,經過分析后我們得到的結果為t*e,而字符J在密文中的頻率為5.9,對應英文文本中可能的字符為i n s h r,經過分析,只有the才是有意義的單詞,因此我們可以猜測密文J對應明文h。v=w(經過這樣不斷的分析,我們最終就能還原出明文了)
再使用鏈接3
點擊Solve
破解出來了!
方法二:
使用工具(工具鏈接)
decrypt.py是解密腳本,encrypted.py是加密腳本,encrypted.txt是加密的密文,decrypted.txt里面是解密出來的明文
希爾密碼
(1)介紹
希爾密碼(Hill Cipher)是基于線性代數多重代換密碼,由Lester S. Hill在1929年發明。每個字母轉換成26進制數字:A=0, B=1, C=2…Z=25一串字母當成n維向量,跟一個n×n的矩陣相乘,再將得出的結果MOD26。更多參考
(2)加密
明文:ACT
明文對應矩陣:
加密密鑰:GYBNQKURP
加密矩陣:
計算過程:
密文:POH
(3)解密
密文POH
計算加密矩陣的逆矩陣:
解密計算:
明文:ACT
至于證明和求逆需要參考線性代數知識。
(4)破解
密碼分析一門破解編碼和密碼的藝術。當我們嘗試去攻破希爾密碼你會發現頻率分析實際上沒有什么用處,特別在密鑰長度增多的情況下。對于較長的二元矩陣(2×2的希爾密碼)頻率分析可能可能會有幫助,但是對于較短的密文分析是沒有實際作用的。
 這里推薦一篇關于用已知明文樣本攻擊的方式破解希爾密碼的文章,基礎的希爾密碼用已知明文攻擊的方式是可攻破的,由于加密完全是線性的,所以攻擊者在截取到部分明文/密文字符對可以輕松建立一個線性系統,輕松搞定希爾密碼,如果不能完全確定線性系統,那么只需要添加部分明文/密文對即可。已知明文攻擊時最好的方式去破解寫入密碼,如果明文一無所知,那就進行推測猜出部分明文。基于已知明文樣本攻擊的方式破解希爾密碼的算法的實現工具破解示例:
 解密腳本鏈接
在線加密解密鏈接
豬圈密碼
(1)介紹
豬圈密碼(Pigpen Cipher或稱九宮格密碼、朱高密碼、共濟會密碼或共濟會員密碼),是一種以格子為基礎的簡單替代式密碼。更多參考
 明文字母和對應密文:
明文:THE QUICK BROWN FPX JUMPS OVER THE LAZY DOG
密文:
在線解密鏈接
(2)變種
圣堂武士密碼(Templar Cipher)是共濟會的“豬圈密碼”的一個變種,一直被共濟會圣殿騎士用。
明文字母和對應密文:
(3)其他變種
明文字母和對應密文
---------------------------------------------------------------------------------------------------------------------
波利比奧斯方陣密碼
(1)介紹
波利比奧斯方陣密碼(Polybius Square Cipher或稱波利比奧斯棋盤)是棋盤密碼的一種,是利用波利比奧斯方陣進行加密的密碼方式,簡單的來說就是把字母排列好,用坐標(行列)的形式表現出來。字母是密文,明文便是字母的坐標。更多參考
 常見的排布方式:
加密實例:
 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 密文:442315 4145241325 1242345233 213453 2445323543 442315 31115554 143422
夏多密碼(曲折加密)
(1)介紹
夏多密碼是作者麥克斯韋·格蘭特在中篇小說《死亡之鏈》塑造夏多這一英雄人物中所自創的密碼,如下圖所示:
源文本:I AM IN DANGER SEND HELP(我有危險,速來增援)
 密文:
-------------------------------------------------------------------------------------------------------------------
普萊菲爾密碼
普萊菲爾密碼(Playfair Cipher)是第一種用于實際的雙字替換密碼,用雙字加密取代了簡單代換密碼的單字加密,很明顯這樣使得密文更難破譯,因為使用簡單替換密碼的頻率分析基本沒有什么作用,雖然頻率分析,通常仍然可以進行,但是有25×25=625種可能而不是25種可能,可以分為三個步驟,即編制密碼表、整理明文、編寫譯文,下面我們以明文:
THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG和密鑰CULTURE為例來講解。普萊菲爾密碼又稱為單方密碼(Single Cipher)之后又出現它的升級版Double Playfair,也就是二方密碼(Two-square Cipher),在之后又有四方密碼(Four-square Cipher)
(1)編制密碼表
1.整理密鑰字母C U L T U R E,去掉后面重復的字母得到:C U L T R E
 2.用上一步得到的字母自上而下來填補5乘5方表的縱列(也可橫排),之后的空白按照相同的順序用字母表中剩余的字母依次填補完整,得到如下的方格:
這一步需要注意的要點:整理密鑰字母時,如果出現”Z”,則需要去除,因為在英文里”Z”的使用頻率最低,相應的如果是德文,則需將”I”與”J”當作一個字母來看待,而法語則去掉”W”或”K”。
(2)整理明文
我們要遵循的原則是“兩個一組”,得到是若干個兩兩成對的字母段,用到的是明文THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG與字母”X“:
 1.將明文兩兩一組按順序排開,得到:TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO G
 2.對于末尾的單個字母要加上一個”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)編寫密文
我們要得到的密文,當然,對于每個字母對,要嚴格遵循如下的原則:
 1.如果兩個字母在同一行則要用它右鄰的字母替換,如果已在最右邊,則用該行最左邊的替換,如明文為”CE“,依據上表,應替換為”EG“;
 2.如果兩個字母在同一列則要用它下邊的字母替換,如果已在最下邊,則用該行最上邊的替換,如明文為”OQ“,依據上表,應替換為”PS“;
 3.如果兩個字母在不同的行或列,則應在密碼表中找兩個字母使四個字母組成一個矩形,明文占據兩個頂點,需用另外兩個頂點的字母替換,如明文為”HX“,可以替換為”WI/J“或”I/JW“(下面的例子將按照橫向替換原則即同行優先)。
 按照上述原則,將明文TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO GX加以轉換得到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。
按照上述原則,將明文TH EQ UI CK BR OW NF OX JU MP SO VE RT HE LA ZY DO GX加以轉換得到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:這里加解密也是橫向編制密碼表):
維吉尼亞密碼
(1)介紹
維吉尼亞密碼(Vigenère Cipher)是在單一愷撒密碼的基礎上擴展出多表代換密碼,根據密鑰(當密鑰長度小于明文長度時可以循環使用)來決定用哪一行的密表來進行替換,以此來對抗字頻統計,更多參考鏈接。
 密表:
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 密鑰(循環使用,密鑰越長相對破解難度越大):CULTURE
 加密過程:如果第一行為明文字母,第一列為密鑰字母,那么明文字母’T’列和密鑰字母’C’行的交點就是密文字母’V’,以此類推。
 密文:VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK
(2)已知密鑰加解密
>>>from pycipher import Vigenere >>>Vigenere('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK' >>>Vigenere('CULTURE').decipher('VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK') 'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'在線加密解密鏈接
(3)未知密鑰破解
可以參考維吉尼亞密碼分析這篇文章,破解維吉尼亞密碼第一步是確定密鑰長度,維吉尼亞密碼分析這篇文章里介紹了使用重合指數算法來確定密鑰長度,在確定密鑰長度后就可以嘗試確定密鑰,通常我們可以使用卡方檢驗來找到每個字母的偏移量,基于維吉尼亞密碼分析一文中的算法實現的工具破解示例。
 密文:kiqpbkxspshwehospzqhoinlgapp
 解密:
(ps:結合左邊的值,密鑰以及解出明文可以確定kien 5或者klen 10為準確的結果)
 明文:DEFEND THE EAST WALL OF THE CASTLE
(4)變種
有幾種密碼和維吉尼亞密碼相似,格羅斯費爾德密碼(Gronsfeld cipher)實際上和維吉尼亞密碼相同,除了使用了數字來代替字母以外沒有什么區別。數字可以選擇一種數列,如斐波那契數列,或者一些其他的偽隨機序列。格羅斯費爾德密碼密碼分析過程和維吉尼亞密碼大同小異,不過,自動密鑰密碼不能使用卡西斯基算法(kasiski)來破譯,因為自動密鑰密碼的密鑰不重復循環使用,破譯自動密鑰密碼最好的方法的就是從密文不斷嘗試和猜測其中明文或密鑰的一部分。
>>>from pycipher import Gronsfeld >>>Gronsfeld([2,20,11,45,20,43,4]).encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK' >>>Gronsfeld([2,20,11,45,20,43,4]).decipher('VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK') 'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'在線加解密鏈接
自動密鑰密碼
(1)介紹
自動密鑰密碼(Autokey Cipher)是多表替換密碼,與維吉尼亞密碼密切相關,但使用不同的方法生成密鑰,通常來說要比維吉尼亞密碼更安全。自動密鑰密碼主要有兩種,關鍵詞自動密鑰密碼和原文自動密鑰密碼.下面我們以關鍵詞自動密鑰為例:
 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 關鍵詞:CULTURE
 自動生成密鑰:CULTURE THE QUICK BROWN FOX JUMPS OVER THE
 接下來的加密過程和維吉尼亞密碼類似,從密表可得:
 密文:VBP JOZGD IVEQV HYY AIICX CSNL FWW ZVDP WVK
(2)已知關鍵詞加解密
>>>from pycipher import Autokey >>>Autokey('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK' >>>Autokey('CULTURE').decipher('VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK') 'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'在線加解密鏈接
(3)未知關鍵字破解
推薦去看這篇自動密鑰密碼分析文章,基于文中的算法實現的工具來破解示例。
 密文:isjiqymdebvuzrvwhmvysibugzhyinmiyeiklcvioimbninyksmmnjmgalvimlhspjxmgfiraqlhjcpvolqmnyynhpdetoxemgnoxl
解密:
(ps:從klen 13可以看出使用的關鍵詞為’FORTIFICATION’)
 明文:DESPITEBEINGMORESECURETHANTHEVIGENERECIPHERTHEAUTOKEYCIPHERISSTILLVERYEASYTOBREAKUSINGAUTOMATEDMETHODS
將明文轉換成可讀句子:
 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)發明。它最知名的應用是Hagelin M-209密碼機。博福特密碼屬于對等加密,即加密演算法與解密演算法相同。
 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 密鑰(循環使用,密鑰越長相對破解難度越大):CULTURE
 加密過程:如果第一行為明文字母,第一列為密文字母,那么沿明文字母’T’列出現密鑰字母’C’的行號就是密文字母’J’,以此類推。
 密文:JNH DAJCS TUFYE ZOX CZICM OZHC BKA RUMV RDY
(2)已知密鑰加解密
>>>from pycipher import Beaufort >>>Beaufort('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY' >>>Beaufort('CULTURE').decipher('JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY') 'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'在線加解密鏈接
滾動密鑰密碼
滾動密鑰密碼(Running Key Cipher)和維吉尼亞密碼有著相同的加密機制,區別是密鑰的選取,維吉尼亞使用的密鑰簡短,而且重復循環使用,與之相反,滾動密鑰密碼使用很長的密鑰,比如引用一本書作為密鑰。這樣做的目的是不重復循環使用密鑰,使密文更難破譯,盡管如此,滾動密鑰密碼還是可以被攻破,因為有關于密鑰和明文的統計分析模式可供利用,如果滾動密鑰密碼使用統計上的隨機密鑰來源,那么理論上是不可破譯的,因為任何可能都可以成為密鑰,并且所有的可能性都是相等的。
 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 密鑰:選取C語言編程(1978版)第63頁第1行”errors can occur in several places. A label has…”,去掉非字母部分作為密鑰(實際選取的密鑰很長,長度至少不小于明文長度)。
 加密過程:加密過程和維吉尼亞密碼加密過程相同
 密文:XYV ELAEK OFQYH WWK BYHTJ OGTC TJI DAK YESR
 已知密鑰在線加解密鏈接
Porta密碼
Porta密碼(Porta Cipher)是一個由意大利那不勒斯的醫生Giovanni Battista della Porta發明的多表代換密碼,Porta密碼具有加密解密過程的是相同的特點。
 密表:
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 密鑰(循環使用,密鑰越長相對破解難度越大):CULTURE
 加密過程:明文字母’T’列與密鑰字母’C’行交點就是密文字母’F’,以此類推。
 密文:FRW HKQRY YMFMF UAA OLWHD ALWI JPT ZXHC NGV
 已知密鑰在線加解密鏈接
(2)破解
Porta密碼可以被以維吉尼亞密碼破解相類似方式進行自動攻破,破解Porta密碼第一步是先確定密鑰長度,這里推薦一篇關于使用重合指數算法確定為維吉尼亞密鑰長度文章。
同音替換密碼
(1)介紹
同音替換密碼(Homophonic Substitution Cipher)是單字母可以被其他幾種密文字母同時替換的密碼,通常要比標準替換密碼破解更加困難,破解標準替換密碼最簡單的方法就是分析字母出現頻率,通常在英語中字母’E'(或’T’)出現的頻率是最高的,如果我們允許字母’E’可以同時被3種不同字符代替,那么就不能還是以普通字母的頻率來分析破解,如果允許可代替字符越多,那么密文就會更難破譯。
 常見代換規則表:
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 密文(其中一種):6CZ KOVST XJ0MA EQY IOGL4 0W1J UC7 P9NB F0H
(2)破解
如果同音替換密碼的同音詞個數很多,那么破解它難度很大,通常的方法采取類似破解替換密碼的”爬山算法”,除了找到一個明文字母映射幾個字符之外,我們還需要確定映射了那些字符,可以嘗試2層嵌套”爬山算法”來破解,外層確定映射的數量,內層確定映射字符
仿射密碼
(1)介紹
仿射密碼(Affine Cipher)是一種單表代換密碼,字母表中的每個字母相應的值使用一個簡單的數學函數映射到對應的數值,再把對應數值轉換成字母。這個公式意味著每個字母加密都會返回一個相同的字母,意義著這種加密方式本質上是一種標準替代密碼。因此,它具有所有替代密碼的弱點。每一個字母都是通過函數(ax + b)mod m加密,其中B是位移量,為了保證仿射密碼的可逆性,a和m需要滿足gcd(a , m)=1,一般m為設置為26。更多參考
 常見的字母對應關系:
下面我們以E(x) = (5x + 8) mod 26函數為例子
至于解密我們知道
即可得到解密結果
以E(x) = (5x + 8) mod 26加密,通過計算可得D(x)=21(x – 8) mod 26,這樣便可以得到明文。
 可參考的Python腳本
在線加解密鏈接
培根密碼
(1)介紹
培根密碼(Baconian Cipher)是一種替換密碼,每個明文字母被一個由5字符組成的序列替換,最初的加密方式就是由’A’和’B’組成序列替換明文(所以你當然也可以用別的字母),比如字母’D’替換成”aaabb”,以下是全部的對應關系(另一種對于關系是每個字母都有唯一對應序列,I和J與U/V各自都有不同對應序列):
A = aaaaa I/J = abaaa R = baaaaB = aaaab K = abaab S = baaabC = aaaba L = ababa T = baabaD = aaabb M = ababb U/V = baabbE = aabaa N = abbaa W = babaaF = aabab O = abbab X = bababG = aabba P = abbba Y = babbaH = aabbb Q = abbbb Z = babbb明文:T H E F O X
 密文:baaba aabbb aabaa aabab abbab babab
 加解密鏈接
--------------------------------------------------------------------------
ADFGX和ADFGVX密碼
ADFGX密碼(ADFGX Cipher)是結合了改良過的Polybius方格替代密碼與單行換位密碼的矩陣加密密碼,使用了5個合理的密文字母:A,D,F,G,X,這些字母之所以這樣選擇是因為當轉譯成摩爾斯電碼(ADFGX密碼是德國軍隊在一戰發明使用的密碼)不易混淆,目的是盡可能減少轉譯過程的操作錯誤。
 加密矩陣示例:
明文:THE QUICK BROWN FOX
 結果矩陣加密:
 XF AD DA ? AF XD XG GA FG ? XA FX DX GX DG ? FA DX FF?
 列移位密鑰:how are u
密文:DXADF AGXF XFFXD FXGGX DGFG AADA ADXXF
 已知密鑰加解密:
在線加解密鏈接
(2)ADFGVX密碼
ADFGVX密碼實際上就是ADFGX密碼的擴充升級版,一樣具有ADFGX密碼相同的特點,加密過程也類似,不同的是密文字母增加了V,使得可以再使用10數字來替換明文。
A D F G V X------------- A | p h 0 q g 6 D | 4 m e a 1 y F | l 2 n o f d G | x k r 3 c v V | s 5 z w 7 b X | j 9 u t i 8由于兩種加密過程完全類似這里就不再重復給出加密過程。
>>>from pycipher import ADFGVX >>>a = ADFGVX('ph0qg64mea1yl2nofdxkr3cvs5zw7bj9uti8','HOWAREU') >>>a.encipher('THE QUICK BROWN FOX') 'DXXFAFGFFXGGGFGXDVGDVGFAVFVAFVGG' >>>a.decipher('DXXFAFGFFXGGGFGXDVGDVGFAVFVAFVGG') 'THEQUICKBROWNFOX'雙密碼
雙密碼(Bifid Cipher)結合了波利比奧斯方陣換位密碼,并采用分級實現擴散,這里的“雙”是指用2個密鑰進行加密。雙密碼是由法國Felix Delastelle發明,除此之外Felix Delastelle還發明了三分密碼(Trifid Cipher),四方密碼(Four-Square Cipher)。還有一個兩方密碼(Two-Square)與四方密碼類似,共軛矩陣雙密碼(Conjugated Matrix Bifid Cipher)也是雙密碼的變種。
 示例密陣:
明文:THE QUICK BROWN FOX
 經過密陣轉換:
 行:512 15543 54352 333
 列:421 33525 21115 214
 分組:
 51215 54354 35233 3
 42133 52521 11521 4
 合并:
 5121542133 5435452521 3523311521 34
 在經過密陣轉換后密文:WETED TKZNE KYOME X
(2)已知密陣加解密
>>>from pycipher import >>>Bifid('phqgmeaylnofdxkrcvszwbuti',5).encipher('THE QUICK BROWN FOX') 'WETEDTKZNEKYOMEX' >>>Bifid('phqgmeaylnofdxkrcvszwbuti',5).decipher('WETEDTKZNEKYOMEX') 'THEQUICKBROWNFOX'(3)未知密陣加解密
手工分析破解雙密碼是有一定難度的,每個字母都是同過3個數字進行非線性代替轉換,而且之后還會對字母順序進行打亂,這樣使雙密碼比一些替換密碼和換位密碼更難破解。然而,現在是計算機時代,這張加密方式沒有安全性可言,通過模擬退火算法就能快速找到雙密碼的密陣。 這里推薦一篇詳細的雙密碼破解分析的文章,基于模擬退火算法實現的工具破解示例:
密文:KWTAZQLAWWZCPONIVBTTBVQUZUGRNHAYIYGIAAYURCUQLDFTYVHTNQEENUPAIFCUNQTNGITEFUSHFDWHRIFSVTBISYDHHASQSROMUEVPQHHCCRBYTQBHWYRRHTEPEKHOBFSZUQBTSYRSQUDCSAOVUUGXOAUYWHPGAYHDNKEZPFKKWRIEHDWPEIOTBKESYETPBPOGTHQSPUMDOVUEQAUPCPFCQHRPHSOPQRSSLPEVWNIQDIOTSQESDHURIEREN
解密:
得到加密矩陣:
G B C M K D H U E T L V Y W I X O Z S P N F A R Q明文:CRYPTANALYS IS OF BIFID BY HAND IS ACTUALLY FAIRLY DIFFICULT THE FRACTIONATING NATURE OF THE CIPHER IE EACH LETTER IS SUBSTITUTED BY CHARACTERS THEN THESE CHARACTERS ARE IUM BLED WHICH WILL PULL THEM APART MAKES THE CIPHER MUCH STRONGER THAN SUBSTITUTION CIPHERS OR TRANSPOSITION CIPHER SON THEIR OWN
三分密碼
三分密碼(Trifid Cipher)結合換位和替換,三分密碼與雙密碼非常相似,差別之處就是用除了3×3×3的密陣代替5×5密陣。
 示例密陣:
明文:THE QUICK BROWN FOX.
 經過密陣轉換:
T(233)表示T在第一個方陣第三行第三列的位置
 分組(分組密鑰以5為例):
合并:
23131 33132 31132 31223 22232 23221 31233 13311 32113 22 21 32在經過密陣轉換后密文:
231313313231132312232223223221312331331132113222132 N O O N W G B X X L G H H W S K W想要深入了解三分密碼并破解三分密碼的小伙伴推薦去看LANIKI教授的一篇密碼課程章節的講義。
四方密碼
(1)介紹
 四方密碼(Four-Square Cipher)是類似普萊菲爾密碼雙字母加密密碼,這樣使加密效果強于其他替換密碼,因為頻率分析變得更加困難了。
 四方密碼使用4個預先設置的5×5字母矩陣,每個矩陣包括25個字母,通常字母’j’被融入到’i’中(維基百科上說’q’被忽略,不過這不重要,因為’q’和’j’都是很少出現的字母),通常左上和右下矩陣式是標準字母排序明文矩陣,右上和左下矩陣是打亂順序的密鑰矩陣。
 示例矩陣:
明文: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 GX
 加密過程:分別在明文矩陣中找到’TH’,分別找到他們在右上矩陣有左下矩陣的交點字母’ES’就是密文,以此類推。
 密文:ESZWQAFHGTDKWHRKUENYQOLMQTUNWMBPTGHQ
(2)已知密鑰矩陣加解密
>>>from pycipher import Foursquare >>>fs = Foursquare('zgptfoihmuwdrcnykeqaxvsbl','mfnbdcrhsaxyogvituewlqzkp') >>>fs.encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'ESZWQAFHGTDKWHRKUENYQOLMQTUNWMBPTGHQ' >>>fs.decipher('ESZWQAFHGTDKWHRKUENYQOLMQTUNWMBPTGHQ') 'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'在線加解密鏈接
?
(3)未知密鑰矩陣破解
推薦一篇關于采用模擬退火算法的四方密碼分析文章,如果有足夠多的密文那么四方密碼可以輕易被破解,如果知道了明文和密文推出密鑰是很容易的,猜測部分明文是一個有效的方法去破解四方密碼,如果一部分明文已知或者可以被猜測出 那么我們首先要確定盡可能多可利用的密鑰,然后才可以進行更多的推測或者用其他的方法破譯?;谒姆矫艽a分析一文實現的C代碼破解示例:
 密文(密文最好在200個字符以上):
HMMKEQESDTMDHLAWFWMNKSOSFOMRFNLWLKHNSQGGEKXEOLLVDXNRSQQGARTFKSAVNUDLFNDHESPZGQ TWESAGPGSQSQSTPKUSBBQLQHESAGPGSQSQGXLNAVHTPMHMKKNYGSUGDMTPDGFNKYAVHXLWGEKRILESLZ ZOFNAVIHRHRKAGHSMYUGEGNSRGAVMVOQPRLNKRXLMYLQPXILESQYBNRHRKAGKYQXDIHMPGPYOERZOLBEZ LURFWLWUOLDDPNSQYAGMUQPQWESBEZVEQESDTMDBQLWDIUSHB
 用法:
 gcc -O3 -lm foursquarecrack2.c scoreText_2.c -o fsc
 ./fsc
 輸出結果:
 Running foursquarecrack, this could take a few minutes...?
 best score so far: -1239.505249, on iteration 1
 Key: 'KFMLUGWSQEPOZTNRBHDAVXCIY','UGSVKFIZMOYXPQRWTHLNCABED' ? ??
 plaintext: 'THECIPHERTEXTSQUARESCANBEGENERATEDUSINGAKEYWORDDROPPINGDUPLICAT
 ? ? ? ? ? ? ELETTERSTHENFILLTHEREMAININGSPACESWITHTHEREMAININGLETTERSOFTHEA
 ? ? ? ? ? ? LPHABETINORDERALTERNATIVELYTHECIPHERTEXTSQUARESCANBEGENERATEDCO
 ? ? ? ? ? ? MPLETELYRANDOMLYTHEFOURSQUAREALGORITHMALLOWSFORTWOSEPARATEKEYSO
 ? ? ? ? ? ? NEFOREACHOFTHETWOCIPHERTEXTMATRICESX'
棋盤密碼
棋盤密碼(Checkerboard Cipher)是使用一個波利比奧斯方陣和兩個密鑰作為密陣的替換密碼,通常在波利比奧斯方陣中J字母往往被包含在I字母中。
 示例密陣:
經過密陣替換:
明文:T H E Q U I C K B R O W N F O X 密文:RK BK RU OC OC BI NK BQ WK RI OQ WI BU NU OQ WU跨棋盤密碼
跨棋盤密碼(Straddle Checkerboard Cipher)是一種替換密碼,當這種密碼在結合其他加密方式,加密效果會更好。
 棋盤示例(選擇3和7作為變換):
明文: T H E Q U I C K B R O W N F O X
 經過加密棋盤替換得到密文:72 30 9 34 71 32 4 1 31 35 36 75 74 0 36 77
 當然我們還可以繼續用其他的加密方式在對跨棋盤密碼加密出的結果再進行加密:
 示例變換密鑰:83729
在經過棋盤轉換后:
5502817432078501808630122404 ppfmyk n if pfkyfyd hkmmcfc最終得到密文:ppfmyk n in pfkyfyd hkmmcfc
在線加解密鏈接
分組摩爾斯替換密碼
分組摩爾斯替換密碼(Fractionated Morse Cipher)首先把明文轉換為莫爾斯電碼,不過每個字母之間用x分開,每個單詞用xx分開。然后使用密鑰生成一個替換密表,這個密表包含所有. - x組合的情況(因為不會出現xxx的情況,所以一共26種組合)。
 密鑰:MORSECODE
 密表:
說明:密表下半部分是固定的,密表的安全性以及加密效果主要取決于使用的密鑰。
 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 (類似)摩爾斯電碼:-x....x.xx--.-x..-x..x-.-.x-.-xx-...x.-.x---x.--x-.xx..-.x---x-..-xx.---x..- --x.--.x...xx---x...-x.x.-.xx-x....x.xx.-..x.-x--..x-.--xx-..x---x--.
說明:明文在轉換為(類似)摩爾斯電碼后進行每3個字符分組,再進行密表的查表。
 密文(經過密表替換):LMUWC OQVHG ZMTAK EVYSW NOYJQ NLIQB JQCDH XMDYF TWRGP FWNH
 已知密鑰在線加解密鏈接
Bazeries密碼
Bazeries密碼(Bazeries Cipher)是換位密碼和替換密碼的組合,使用兩個波利比奧斯方陣,一個明文字母方陣,使用一個隨機的數字(一般小于1000000)的生成一個密鑰矩陣同時作為第一輪明文劃分分組,比如2333這個數字翻譯為英文便是TWO THOUSAND THREE HUNDRED THIRTY THREE,從第一個字母T開始選取不重復的字母,之后再從字母表中按序選取沒有出現的字母組成密鑰矩陣。
 明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
 隨機數字:2333
 明文矩陣:
示例密鑰矩陣:
T W O H U S A N D R E I/J Y B C F G K L M P Q V X Z明文分組:
2 ? ? ?3 ? ? ?3 ? ?3 ? ? ? ?2 ? ?3 ? ? 3 ? ? ? 3 ? ?2 ? ? 3 ? ?3 ? ? ?3
 TH EQU ICK BRO WN FOX JUM PSO VE RTH ELA ZYD OG
 分組明文反序:
 HT UQE KCI ORB WN XOF MUJ OSP EV EHT ALE DYZ GO
 使用密鑰矩陣替換:
 IL XHP QEG KDS YR CKW NXG KBV PU ILD TOP FMZ AK
 (比如’H’在明文矩陣對應到密鑰矩陣的位置就是’I’)
 已知密鑰在線加解密鏈接
Digrafid密碼
Digrafid密碼(Digrafid Cipher)使用兩個密鑰生成分別生成類似波利比奧斯方陣的3×9方格的密表。,主要有3分組和4分組兩類
 第一個方陣密鑰:digrafid
 第二個方陣密鑰:cipher
 密表:
明文:THE QUICK BROWN FOX
 密表轉換(以4分組為例):
說明:T在第一矩陣第2列,h在第二矩陣第4行,T所在的行與h所在的列相交的位置數字為7,所以Th表示為274。
 轉換密文:
格朗普雷密碼(Grandpré Cipher)是替換密碼的一種,一般使用8個8字母的單詞橫向填充8×8方陣,且第一列為一個單詞,并且在方陣中26個字母都必須出現一次以上。
 示例密陣:
明文:T ?H ?E ?Q ?U ?I ?C ?K ?B ?R ?O ?W ?N ?F ?O?
 密文:84 27 82 41 51 66 31 36 15 71 67 73 52 34 67
 說明:明文中的字母在密陣位置可能不止一個,所以加密結果可能有多種,但是不影響解密。密陣還有6×6,7×7,9×9,10×10幾種。顯然密陣越大每個字母被替換的情況就可能越多,那么加密效果就更好。
比爾密碼
比爾密碼維基百科鏈接
鍵盤密碼
一般用到的鍵盤密碼就是手機鍵盤和電腦鍵盤兩種,2014 0ctf比賽里Crypto類型中Classic一題就是電腦鍵盤密碼,詳細可以參考,另外給出另外一些參考情況。
豬圈密碼
就是一種將中文和數字進行轉化的密碼,算法相當簡單:當前漢字有多少筆畫出頭,就是轉化成數字幾。例如:
 王夫 井工 夫口 由中人 井中 夫夫 由中大:67 84 70 123 82 77 125
盲文
盲文或稱點字、凸字,是專為盲人設計、靠觸覺感知的文字。透過點字板、點字機、點字打印機等在紙張上制作出不同組合的凸點而組成,一般每一個方塊的點字是由六點組成,左側從上到下為123,右側為456,叫一方。 它是由法國盲人路易·布萊爾于1824年創造的,故國際上通稱為“布萊爾(Braille)”。
盲文對照表:
其他有趣的機械密碼
恩尼格碼密碼
恩尼格瑪密碼機(德語:Enigma,又譯啞謎機,或“謎”式密碼機)是一種用于加密與解密文件的密碼機。確切地說,恩尼格瑪是對二戰時期納粹德國使用的一系列相似的轉子機械加解密機器的統稱,它包括了許多不同的型號,為密碼學對稱加密算法的流加密。詳細工作原理參考維基百科。
在線模擬傳送門。
?
代碼混淆加密
?
asp混淆加密
[php language=”混淆加密”][/php][/php]118
[css language=”/js混淆加密”][/css][/css]119
VBScript.Encode混淆加密
VBscript在線解密
ppencode
ppencode-Perl把Perl代碼轉換成只有英文字母的字符串。
ppencode在線轉換鏈接
rrencode
rrencode可以把ruby代碼全部轉換成符號
jjencode&&aaencode
jjencode將JS代碼轉換成只有符號的字符串,類似于rrencode,介紹的PPT,aaencode可以將JS代碼轉換成常用的網絡表情,也就是我們說的顏文字js加密
在瀏覽器中按F12,在Console中,將顏文字(aaencode代碼)復制進去,回車
aaencode傳送門
jjencode/aaencode的解密直接在瀏覽器的控制臺里輸入密文即可執行解密,想要詳細了解jjencode是如何進行請參考,你也可以在github上下載實現jjdecoder的源碼進行分析。
JSfuck
JSFuck 可以讓你只用 6 個字符[ ]( ) ! +來編寫 JavaScript 程序。
JSfuck在線轉換鏈接
jother
jother是一種運用于javascript語言中利用少量字符構造精簡的匿名函數方法對于字符串進行的編碼方式。其中8個少量字符包括:! + ( ) [ ] { }。只用這些字符就能完成對任意字符串的編碼。
do9gy的jother編碼之謎
jother編碼鏈接
 jother直接在瀏覽器(f12)的控制臺里輸入密文即可執行解密:
brainfuck
Brainfuck是一種極小化的計算機語言,按照”Turing complete(完整圖靈機)”思想設計的語言,它的主要設計思路是:用最小的概念實現一種“簡單”的語言,BrainF**k 語言只有八種符號,所有的操作都由這八種符號(> < + - . , [ ])的組合來完成。
 明文:hello!
brainfuck傳送門
uuencode編碼
UUencode是一種二進制到文字的編碼!它不是MIME編碼中一員。最早在unix 郵件系統中使用,全稱:Unix-to-Unix encoding。它也是定義了用可打印字符表示二進制文字一種方法,并不是一種新的編碼集合。Uuencode將輸入文本以每三個字節為單位進行編碼,如果最后剩下的資料少于三個字節,不夠的部份用零補齊。三個字節共有24個Bit,以6-bit為單位分為4個組,每個組以十進制來表示所出現的字節的數值。這個數值只會落在0到63之間。然后將每個數加上32,所產生的結果剛好落在ASCII字符集中可打印字符(32-空白…95-底線)的范圍之中。跟Base64具有非常多的類似,也做了一些特殊轉碼說明!因為對所有文本都會編碼一次可讀性不是很好!!具體編碼原理、算法可以查考UUencode編碼算法
例如:M.3!-,$UO.3!-,$UO.3`*,38X33!-;S$V.$TP36\Q-C@*,34X33!-;S$U.$TP%36\Q-3@`
uuencode解碼得到:
90M0Mo90M0Mo90
 168M0Mo168M0Mo168
 158M0Mo158M0Mo158
uuencode在線編碼鏈接(目前我見過最好用的)
其他稀奇古怪的編程語言請參考
參考網站與相關工具
http://rumkin.com/tools/cipher/
http://www.thonky.com/kryptos/
百度百科
維基百科
JPK神器
密碼破解腳本
shellcode轉換腳本
Converter.exe下載鏈接
上面鏈接大都需要vpn
此篇文章長期更新,我會把我碰到的所有編碼解碼,加密解密方式,記錄下來。
總結
以上是生活随笔為你收集整理的CTF中Crypty入门必看(密码类,密码学)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 求逆序对
- 下一篇: I Hate It (HDU 1754)
