buuctf-crypto
借助buuctf密码题回顾一下基本的密码算法
一、MD5
1、原理
密码散列函数,产生一个128位的散列值,具体加工不赘述
2、识别
散列值128位,16进制的数长度为32,2进制的数长度为128位
二、url编码
1、原理
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。url编码就是一个字符ascii码的十六进制,不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。
2、识别
%xx%xx%xx
3、题目
三、一眼就解密/base64
1、原理
base64将三个字符转换为四个字符
http://www.ruanyifeng.com/blog/2008/06/base64.html
2、识别
密文包含一些符号,例如=,+,/
3、题目
四、看我回旋踢
1、原理
rot13
检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可
2、识别
synt是flag向后移13位替换的
3、题目
五、摩斯
1、原理
2、识别
声音 or 点杠点
3、题目
六、password
1、原理
社工
2、识别
无
3、题目
七、变异凯撒
1、原理
替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
2、识别
看ascii码
3、题目
a:97 -> f:102 +5
f:102 -> l:108 +6
Z:90 -> a:97 +7
_:95 -> g:103 +8
猜测移的位数递增
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 a='afZ_r9VYfScOeO_UL^RWUc' 2 i = 5 3 d = "" 4 for b in a: 5 c = ord(b) + i 6 i = i + 1 7 d = d + chr(c) 8 print(d)
八、quoted-printable
1、原理
任何一个8位的字节值可编码为3个字符:一个等号“=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值。为了满足电子邮件中不能直接使用非ASCII码字符的规定,用于ACSII文本中夹杂少量非ASCII码字符的情况
2、识别
=xx=xx xx(0–9或A–F)
3、题目