前言: 学了那么久的编码,之前一直都没有时间整理,现在来总结一下。
1、base家族
1.1、base16
就是16进制,编码内容只有数字0-9,和大写英文字母A-F
1.2、base32
编码内容只有大写英文字母A-Z,和数字234567
1.3、base64
编码内容主要有大写英文字母A-Z,小写英文字母a-z,数字0-9,+和/
2、凯撒密码
凯撒密码主要通过偏移来实现加密,偏移量是几,密文就是明文在字母表上向后移几位所对应的字母,由于凯撒密码所操作的范围只有字母表上的26个英文字母,所以当偏移量大于26时,密文就会在字母表上绕一圈绕回来。
加密公式:f(a) = (a+N) % 26
解密公式:f(a) = (a+(a-N)) % 26
3、栅栏密码
栅栏密码是一种简单的移动字符位置的加密方法,规则简单,容易破解。栅栏密码的加密方式:把文本按照一定的字数分成多个组,取每组第一个字连起来得到密文1,再取每组第二个字连起来得到密文2……最后把密文1、密文2……连成整段密文。
例:
明文:abcdefgh
每组字数:4
把明文分组:
abcd
efgh
取每组第一个字符:ae
取每组第二个字符:bf
取每组第三个字符:cg
取每组第四个字符:dh
所以密文为:aebfcgdh
解密过程反推即可
4、ROT编码
ROT编码是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密。
ROT5:只对数字进行编码,用当前数字往后数的第5个数字替换当前数字。
例:1——>6。
ROT13:只对字母进行编码,用当前字母往后数的第13个字母替换当前字母。
例:A——>N
ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起。
例:1a——>6n
ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前或后数的第47位对应字符替换当前字符。
例:0——>_ ,z——K
5、摩尔斯电码
摩尔斯电码(又译为摩斯密码,Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它的代码包括五种: 点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。
6、XXencode编码
XXencode是一种二进制到文字的编码!它跟UUencode以及Base64编码方法很类似。它也是定义了用可打印字符表示二进制文字一种方法,不是一种新的编码集合。XXencode将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部份用零补齐。三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在0到63之间。它64可打印字符固定字符范围及顺序!包括大小写字母、数字以及±字符。它较UUencode编码优点在于它64字符是常见字符,没有任何特殊字符!
例:I am XXEncode
BGG-VPG-MK2JiMqxYNE++
解密网站:http://www.atoolbox.net/Tool.php?Id=780
7、Quoted-printable编码
Quoted-printable 可译为“可打印字符引用编码”、“使用可打印字符的编码”,我们收邮件,查看信件原始信息,经常会看到这种类型的编码!
Quoted-printable是使用可打印的ASCII字符(如字母、数字与“=”)表示各种编码格式下的字符,以便能在7-bit数据通路上传输8-bit数据, 或者更一般地说在非8-bit clean媒体上正确处理数据[注 1]。这被定义为MIME content transfer encoding,用于e-mail。QP使用“=”开头的转义字符. 一般限制行宽为76,因为有些软件限制了行宽.
例:这就是可打印字符引用编码
=E8=BF=99=E5=B0=B1=E6=98=AF=E5=8F=AF=E6=89=93=E5=8D=B0=E5=AD=97=E7=AC=A6=E5=
=BC=95=E7=94=A8=E7=BC=96=E7=A0=81
解密网站:http://ctf.ssleye.com/quoted.html
8、培根密码
培根密码,又名倍康尼密码(英语:Bacon’s cipher)是由法兰西斯·培根发明的一种隐写术。培根密码本质上是将二进制信息通过样式的区别,加在了正常书写之上。
加密原理:
例:pengeniscool
ABBBBAABAAABBABAABBAAABAAABBABABAAABAABAAAABAABBBAABBBAABABB
解密网站:https://tool.bugku.com/peigen/
9、猪圈密码
猪圈密码(亦称朱高密码、共济会暗号、共济会密码或共济会员密码),是一种以格子为基础的简单替代式密码。即使使用符号,也不会影响密码分析,亦可用在其它替代式的方法。
加密方法:
下图,是猪圈密码用符号与26个字母作的密码配对。
10、BrainFuck编码
Brainfuck是一种极小化的计算机语言,目标是建立一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。BrainFuck 语言只有八种符号,所有的操作都由这八种符号(> < + – . , [ ]
)的组合来完成。
例:this is brainfuck
+++++ +++++ [->++ +++++ +++<] >++++ +++++ +++++ ++.<+ ++[-> ---<] >---.
+.<++ +[->+ ++<]> +.<++ +++++ ++[-> ----- ----< ]>--. <++++ ++++[ ->+++
+++++ <]>++ +++++ ++.<+ ++[-> +++<] >+.<+ +++++ +++[- >---- ----- <]>--
.<+++ +++++ [->++ +++++ +<]>+ +.<++ ++[-> ++++< ]>.<+ +++[- >---- <]>-.
+++++ +++.+ ++++. ----- ---.< +++[- >+++< ]>+++ +++.< ++++[ ->--- -<]>-
-.+++ +++++ .<
解密网站:https://www.splitbrain.org/services/ook
11、波利比奥斯棋盘
波利比奥斯棋盘(Polybius Checkerboard)是棋盘密码的一种,是利用波利比奥斯方阵(Polybius Square)进行加密的密码方式,简单的来说就是把字母排列好,用坐标的形式表现出来。字母是密文,明文便是字母的坐标。
12、JSFuck编码
JSFuck是一种深奥的 JavaScript 编程风格。以这种风格写成的代码中仅使用 [、]、(、)、! 和 + 六种字符。此编程风格的名字派生自仅使用较少符号写代码的Brainfuck语言。JSFuck的标志:( ) + [ ] !
这种编码的唯一特点就是长,特别长。
例:j
[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((+(!+[]+!+[]+!+[]+!+[]+[+[]]))[(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(+![]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(+![]+[![]]+([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]](!+[]+!+[]+[+!+[]])[+!+[]])()
解密网站:http://www.jsfuck.com/
13、Unicode 编码
Unicode 编码是一种力求容纳世界上所有字符的编码格式,因此也被称为万国码、统一码等等。Unicode 编码给每一个字符都指定了统一且唯一的编码,这使得不同种类的文字可以跨语言、跨平台的应用。
例:this is Unicode
this is Unicode
解密网站:https://www.qqxiuzi.cn/bianma/Unicode.htm
14、HTML实体编码
在HTML中,有些字符是预留的,例如需要在网页上显示小于号(<)和大于号(>),由于它们是HTML的预留标签,可能会被误解析从而无法在浏览器上显示。这时就需要将小于号和大于号写成字符实体。
常见的HTML实体字符
解密网站:https://www.qqxiuzi.cn/bianma/zifushiti.php
总结: 以上是目前小白做ctf题时遇到过的一些编码,肯定还有没有总结到的,不过以后遇到会补上的。
最后分享两个在线解码网站:
http://ctf.ssleye.com/
https://www.qqxiuzi.cn/daohang.htm