分享最近学习的几种常见密码
1、base64、16、32
三种编码的字符集
base 64 : a-z, A-Z, 0-9,+,/,共64个以及补位的 ’=‘ 。
base 32 :A-Z,2-7,共32个以及补位的 ’=‘ 。
base 16 :0-9,A-F ,共16个以及补位的 ’=‘ 。
如何判断一个编码是不是base家族的编码
根据编码的字符集我们很容易看出,如果一段编码的最后有”=“,则一定是,如果没有,需要再看看编码中包含的字母,是否都在base家族对应的字符集上,如果完全对应,那就一定是base家族的编码啦。
base64是如何转换的
base64的编码规则是将3个字节变为4个字节
3* 8=4* 6
内存1个字节占8位
首先将字符串(图片等)转换成二进制序列
然后按每6个二进制位为一组,分成若干组,
如果不足6位,则低位补0。
每6位组成一个新的字节,高位补00( 计算机一个字节占8位,不够就自动补两个高位0了 ),
构成一个新的二进制序列,最后根据base64索引表中的值找到对应的字符。
例如将字符串”abc"进行base64编码
如果原始字符只有一个字节或两个字节在末尾补“=”凑齐四个字节
2、摩斯电码
摩斯电码的形式比较简单也很容易辨认,在题目中以“..-//.-../.-/."形式给出
例:Bugku-easy_crypto
初次看到此题我们会想到二进制,对照ASCII表,得到的并不是提交答案的格式,进而猜想是否是摩斯电码,0代表 “." , 1代表 “-”。据此得到正确flag。
3、栅栏密码
栅栏密码的加密方式
栅栏密码是一种规则比较特殊的移位密码,其秘钥只有一个字k,代表栅栏的长度。
栅栏密码,就是将加密的密文分为k个一组,取每组的第1个字符连接在一起,然后再取第2个(第3个,第4个······)放置在一起
例如将flag{zhalanmima}加密,k设置为4
将密文每四个分为一组 flag {zha lanm ima}
则密文为f{lilzamahnagam}
例:Bugku—聪明的小羊
根据描述我们就很容易联想到栅栏密码,再根据一只小羊翻过两个栅栏,则秘钥为2
利用解密工具很容易得到flag{6fde4163df05d900}。
栅栏密码的解密方法
根据栅栏密码的加密方式,我们只需要完成加密的逆过程,就能得到原始字符串
4、猪圈密码
猪圈密码的表示形式
猪圈密码 是一种简单的替代密码,所以安全性很低
例:Bugku—把猪困在猪圈里
首先看到题目的名称我们就会想到猪圈密码
下载文件之后看到
根据“=”我们很容易判断这是base64编码,然后利用工具进行解密,但是我们并没有得到能用的信息,此时再根据猪圈密码的形式我们猜测,这可能需要base64转为图片。
我们得到
再利用图片一一对照即可得到正确的flag啦