说明:本文仅用于个人总结
系多次遇见加密题常无法判断加密方式,决定做一次整理总结
1.凯撒密码:
因为基本逻辑是在于后移字母,所以密文形式常全为字母
如fuck在密钥为1的情况下加密后为etbj。
上图为flag的枚举凯撒密码(虽然可能没啥用);
枚举凯撒密码的工具:凯撒(Caesar)加密/解密 - Bugku CTF
2.变异凯撒密码:
底层逻辑和凯撒密码相同,但是存在密钥的更复杂的处理,如每个字母的密钥为递增数列。这时需要用python脚本处理。
在此不做展示(懒)
3.摩斯密码&培根密码:
摩斯密码密文特点显而易见,培根密码的密文中只出现A 和 B;
注意的是:摩斯密码解密后全为大写,不存在小写;
4.base16、32、64编码:
底层逻辑:如对Fuck进行base16编码:
F | u | c | k |
0100 0110 | 0111 0101 | 0110 0011 | 0110 1011 |
4 6 | 7 5 | 6 3 | 6 11 |
46 | 75 | 63 | 6B |
这里需要用Ascii表中的二进制先对Fuck进行编码(图源自网络)
每4个数为一组再转换为10进制
最后对照base16转换表(即改为16进制)
最后得到结果:4675636B
放到工具里验证一下:
而base32,则是每5位数一组,最后转化为32进制
不同的是base32有时补位后达不到40位,此时需要 = 补位。
一个 = 相当于 5 个二进制位
base64,6位数一组,最后转化为64进制(下为对照表)
base64中最多出现2个等号
密文特征:
不难得出:如果密文中多为数字,只含小写字母,则可能是base16编码;
如果密文中多为大写字母,不含小写字母,则可能是base32编码;
如果密文中大小写字母均有且等号数量不超过2,则可能是base64;
5.base58:不含O,o,i,l,和+ 、/
6.rot:
rot13:凯撒密码-key = 13;
rot5:移数字,key=5;
rot18:字母 key=13,数字 key=5;
rot47:ASCII值后移47;
7.栅栏密码:
原理:如对Fucking加密,密钥为2
先对Fucking俩俩分组:Fu ck in g@(@用于补空)
再取每组第一个:Fcig
每组第二个:ukn@
将俩组拼接:Fcigukn@
特征:含有多个@,或者能直接看到flag{}的分散
如:fFnlugac}gk@{i@
8.URL编码:
多带百分号
下图为部分编码
9.云影密码(01248密码):
0为间隔,将非零数隔开组合,各个组合相加,对于a~z字母序号。
特征:多次出现0