转自:https://blog.csdn.net/pdsu161530247/article/details/75667218
常见编码
ASCII编码
base64,32,16,编码
base32中只有大写字母(A-Z)和数字234567
Quoted-printable编码解码
XXencode编码
UUencode编码
URL编码
Unicode编码
Escape/Unescape编码
HTML实体编码
敲击码
摩尔斯电码(摩斯密码)
介绍:
摩尔斯电码(英语:Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人艾尔菲德·维尔(Alfred Lewis Vail)与萨缪尔·摩尔斯(Samuel Finley Breese Morse)在1836年发明。摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用0和1两种状态的二进制代码,它的代码包括五种:
1.点(.)
2.划(-)
3.每个字符间短的停顿(在点和划之间的停顿)
4.每个词之间中等的停顿
5.以及句子之间长的停顿
摩尔斯电码字母与数字对应表:md5加密解密
文本加密
换位密码
栅栏密码
去空格:Thequickbrownfoxjumpsoverthelazydog
分组:Th eq ui ck br ow nf ox ju mp so ve rt he la zy do g
第一组:Teucbonojmsvrhlzdg
第二组:hqikrwfxupoeteayo
密文:Teucbonojmsvrhlzdghqikrwfxupoeteayo
曲路密码
列移位密码
替换密码
埃特巴什码
ZYXWVUTSRQPONMLKJIHGFEDCBA
凯撒密码
ROT5/13/18/47
密文:gur dhvpx oebja sbk whzcf bire gur ynml qbt
简单替换密码(单表代替密码)
明文字母 : abcdefghijklmnopqrstuvwxyz
明文字母 : phqgiumeaylnofdxjkrcvstzwb
明文:the quick brown fox jumps over the lazy dog
密文:cei jvaql hkdtf udz yvoxr dsik cei npbw gdm
- 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?
希尔密码
这里推荐一篇关于用已知明文样本攻击的方式破解希尔密码的文章,基础的希尔密码用已知明文攻击的方式是可攻破的,由于加密完全是线性的,所以攻击者在截取到部分明文/密文字符对可以轻松建立一个线性系统,轻松搞定希尔密码,如果不能完全确定线性系统,那么只需要添加部分明文/密文对即可。已知明文攻击时最好的方式去破解写入密码,如果明文一无所知,那就进行推测猜出部分明文。基于已知明文样本攻击的方式破解希尔密码的算法的实现工具破解示例:
解密脚本链接
猪圈密码
明文字母和对应密文:
(3)其他变种
明文字母和对应密文
---------------------------------------------------------------------------------------------------------------------
波利比奥斯方阵密码
常见的排布方式:
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密文:442315 4145241325 1242345233 213453 2445323543 442315 31115554 143422
夏多密码(曲折加密)
密文:
普莱菲尔密码
THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
和密钥CULTURE
为例来讲解。普莱菲尔密码又称为单方密码(Single Cipher)之后又出现它的升级版Double Playfair,也就是二方密码(Two-square Cipher),在之后又有四方密码(Four-square Cipher)2.用上一步得到的字母自上而下来填补5乘5方表的纵列(也可横排),之后的空白按照相同的顺序用字母表中剩余的字母依次填补完整,得到如下的方格:
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。
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。
加密解密链接(ps:这里加解密是横向编制密码表)
加密解密实例(ps:这里加解密也是横向编制密码表):
>>>from pycipher import Playfair >>>Playfair('CULTREABDFGHIKMNOPQSVWXYZ').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV' >>>Playfair('CULTREABDFGHIKMNOPQSVWXYZ').decipher('UKDNLHTGFLWUSEPWHLISNPCGCRGAUBVZAQIV') 'THEQUICKBROWNFOXIUMPSOVERTHELAZYDOGX'
维吉尼亚密码
密表:
密钥(循环使用,密钥越长相对破解难度越大):CULTURE
加密过程:如果第一行为明文字母,第一列为密钥字母,那么明文字母’T’列和密钥字母’C’行的交点就是密文字母’V’,以此类推。
密文:VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK
>>>from pycipher import Vigenere >>>Vigenere('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK' >>>Vigenere('CULTURE').decipher('VBPJOZGMVCHQEJQRUNGGWQPPKNYINUKRXFK') 'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'
密文:kiqpbkxspshwehospzqhoinlgapp
解密:
明文:DEFEND THE EAST WALL OF THE CASTLE
>>>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'在线加解密 链接
自动密钥密码
明文: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
>>>from pycipher import Autokey >>>Autokey('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK' >>>Autokey('CULTURE').decipher('VBPJOZGDIVEQVHYYAIICXCSNLFWWZVDPWVK') 'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'
密文:isjiqymdebvuzrvwhmvysibugzhyinmiyeiklcvioimbninyksmmnjmgalvimlhspjxmgfiraqlhjcpvolqmnyynhpdetoxemgnoxl
明文:DESPITEBEINGMORESECURETHANTHEVIGENERECIPHERTHEAUTOKEYCIPHERISSTILLVERYEASYTOBREAKUSINGAUTOMATEDMETHODS
despite being more secure than the vigenere cipher the autokey cipher is still very easy to break using automated methods
博福特密码
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
密钥(循环使用,密钥越长相对破解难度越大):CULTURE
加密过程:如果第一行为明文字母,第一列为密文字母,那么沿明文字母’T’列出现密钥字母’C’的行号就是密文字母’J’,以此类推。
密文:JNH DAJCS TUFYE ZOX CZICM OZHC BKA RUMV RDY
>>>from pycipher import Beaufort >>>Beaufort('CULTURE').encipher('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG') 'JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY' >>>Beaufort('CULTURE').decipher('JNHDAJCSTUFYEZOXCZICMOZHCBKARUMVRDY') 'THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG'在线加解密链接
滚动密钥密码
明文: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密码
密表:
密钥(循环使用,密钥越长相对破解难度越大):CULTURE
加密过程:明文字母’T’列与密钥字母’C’行交点就是密文字母’F’,以此类推。
密文:FRW HKQRY YMFMF UAA OLWHD ALWI JPT ZXHC NGV
已知密钥在线加解密链接
常见代换规则表:
密文(其中一种):6CZ KOVST XJ0MA EQY IOGL4 0W1J UC7 P9NB F0H
仿射密码
常见的字母对应关系:
可参考的Python脚本
培根密码
A = aaaaa I/J = abaaa R = baaaa B = aaaab K = abaab S = baaab C = aaaba L = ababa T = baaba D = aaabb M = ababb U/V = baabb E = aabaa N = abbaa W = babaa F = aabab O = abbab X = babab G = aabba P = abbba Y = babba H = aabbb Q = abbbb Z = babbb
密文:baaba aabbb aabaa aabab abbab babab
加解密链接
ADFGX和ADFGVX密码
ADFGX密码(ADFGX Cipher)是结合了改良过的Polybius方格替代密码与单行换位密码的矩阵加密密码,使用了5个合理的密文字母:A,D,F,G,X,这些字母之所以这样选择是因为当转译成摩尔斯电码(ADFGX密码是德国军队在一战发明使用的密码)不易混淆,目的是尽可能减少转译过程的操作错误。加密矩阵示例:
A D F G X ---------------- A | p h q g m D | e a y n o F | f d x k r G | c v s z w X | b u t i/j l
结果矩阵加密:
XF AD DA AF XD XG GA FG XA FX DX GX DG FA DX FF
列移位密钥:how are u
已知密钥加解密:
>>>from pycipher import ADFGX >>>a = ADFGX('phqgmeaynofdxkrcvszwbutil','HOWAREU') >>>a.encipher('THE QUICK BROWN FOX') 'DXADFAGXFXFFXDFXGGXDGFGAADAADXXF' >>>a.decipher('DXADFAGXFXFFXDFXGGXDGFGAADAADXXF') 'THEQUICKBROWNFOX'在线加解密链接
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'
双密码
示例密阵:
1 2 3 4 5 1| p h q g m 2| e a y l n 3| o f d x k 4| r c v s z 5| w b u t i/j
经过密阵转换:
行:512 15543 54352 333
列:421 33525 21115 214
分组:
51215 54354 35233 3
42133 52521 11521 4
合并:
5121542133 5435452521 3523311521 34
在经过密阵转换后密文:WETED TKZNE KYOME X
>>>from pycipher import >>>Bifid('phqgmeaylnofdxkrcvszwbuti',5).encipher('THE QUICK BROWN FOX') 'WETEDTKZNEKYOMEX' >>>Bifid('phqgmeaylnofdxkrcvszwbuti',5).decipher('WETEDTKZNEKYOMEX') 'THEQUICKBROWNFOX'
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
三分密码
示例密阵:
密阵顺序 = EPSDUCVWYM.ZLKXNBTFGORIJHAQ 方阵 1 方阵 2 方阵 3 1 2 3 1 2 3 1 2 3 1 E P S 1 M . Z 1 F G O 2 D U C 2 L K X 2 R I J 3 V W Y 3 N B T 3 H A Q明文:THE QUICK BROWN FOX.
经过密阵转换:
T H E Q U I C K B R O W N F O X . 2 3 1 3 1 3 1 2 2 3 3 1 2 3 3 2 2 3 3 1 3 2 2 2 2 3 2 1 3 3 1 1 2 1 3 1 1 3 2 2 3 2 2 1 3 2 1 1 3 3 2T(233)表示T在第一个方阵第三行第三列的位置
分组(分组密钥以5为例):
THEQU ICKBR OWNFO X. 23131 31223 31233 22 33132 22232 13311 21 31132 23221 32113 32合并:
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
四方密码
(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)未知密钥矩阵破解
推荐一篇关于采用模拟退火算法的四方密码分析文章,如果有足够多的密文那么四方密码可以轻易被破解,如果知道了明文和密文推出密钥是很容易的,猜测部分明文是一个有效的方法去破解四方密码,如果一部分明文已知或者可以被猜测出 那么我们首先要确定尽可能多可利用的密钥,然后才可以进行更多的推测或者用其他的方法破译。基于四方密码分析一文实现的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'
棋盘密码
示例密阵:
Q U I C K -------------- B |K N I/J G H R |P Q R S T O |O Y Z U A W |M X W V B N |L F E D C经过密阵替换:
棋盘示例(选择3和7作为变换):
0 1 2 3 4 5 6 7 8 9 f k m c p d y e 3: h b i g q r o s a z 7: l u t j n w v x明文: 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
8372983729837298372983729837 +7230934713241313536757403677 ----------------------------- 5502817432078501808630122404在经过棋盘转换后:
5502817432078501808630122404 ppfmyk n if pfkyfyd hkmmcfc最终得到密文:ppfmyk n in pfkyfyd hkmmcfc
分组摩尔斯替换密码
密钥:MORSECODE
密表:
MORSECDABFGHIJKLNPQTUVWXYZ .........---------XXXXXXXX ...---XXX...---XXX...---XX .-X.-X.-X.-X.-X.-X.-X.-X.-说明:密表下半部分是固定的,密表的安全性以及加密效果主要取决于使用的密钥。
明文: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--.
密文(经过密表替换):LMUWC OQVHG ZMTAK EVYSW NOYJQ NLIQB JQCDH XMDYF TWRGP FWNH
已知密钥在线加解密链接
Bazeries密码
明文:THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
随机数字:2333
明文矩阵:
A F L Q V B G M R W C H N S X D I/J O T Y E K P U Z示例密钥矩阵:
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明文分组:
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
密表:
1 2 3 4 5 6 7 8 9 D I G R A F D B C 1 2 3 E H J L M N O P Q 4 5 6 S T U V W X Y Z # 7 8 9 c f s 1 i g t 2 p j u 3 h k v 4 e l w 5 r m x 6 a n y 7 b o z 8 d q # 9明文:THE QUICK BROWN FOX
密表转换(以4分组为例):
Th Eq Ui Ck Br Ow Nf Ox 2 1 3 9 8 7 6 7 7 5 7 2 1 6 5 6 4 9 2 4 6 5 1 6说明:T在第一矩阵第2列,h在第二矩阵第4行,T所在的行与h所在的列相交的位置数字为7,所以Th表示为274。
转换密文:
213 975 724 924 876 716 566 516 Ip #e Dk Ck Zr Dr Mx Ar格朗普雷密码
示例密阵:
密文:84 27 82 41 51 66 31 36 15 71 67 73 52 34 67
说明:明文中的字母在密阵位置可能不止一个,所以加密结果可能有多种,但是不影响解密。密阵还有6×6,7×7,9×9,10×10几种。显然密阵越大每个字母被替换的情况就可能越多,那么加密效果就更好。
比尔密码
键盘密码
猪圈密码
王夫 井工 夫口 由中人 井中 夫夫 由中大:67 84 70 123 82 77 125
盲文
其他有趣的机械密码
恩尼格码密码
在线模拟传送门。
代码混淆加密
asp混淆加密
[php language=”混淆加密”][/php][/php]118
[css language=”/js混淆加密”][/css][/css]119
VBScript.Encode混淆加密
ppencode
ppencode-Perl把Perl代码转换成只有英文字母的字符串。ppencode在线转换链接
rrencode
rrencode可以把ruby代码全部转换成符号
jjencode&&aaencode
aaencode传送门
jjencode/aaencode的解密直接在浏览器的控制台里输入密文即可执行解密,想要详细了解jjencode是如何进行请参考,你也可以在github上下载实现jjdecoder的源码进行分析。
JSfuck
jother
jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编码方式。其中8个少量字符包括:! + ( ) [ ] { }。只用这些字符就能完成对任意字符串的编码。
jother直接在浏览器(f12)的控制台里输入密文即可执行解密:
brainfuck
明文:hello!
+++++ +++++ [->++ +++++ +++<] >++++ .---. +++++ ++..+ ++.<+ +++++ +++++ [->++ +++++ ++++< ]>+++ ++++. <++++ +++[- >---- ---<] >--.< +++++ ++[-> ----- --<]> ----- ----- .<brainfuck 传送门
uuencode编码
168M0Mo168M0Mo168
158M0Mo158M0Mo158