最近接触了一些密码学的题,感觉特别有意思,写下博客来记录一下,以免忘记
一:哈夫曼树
CTF Crypto(密码学)总结_百度
哈夫曼树(也称为最优二叉树),虽然(目前)没学,但是百度、谷歌大法无敌。
查查原理,再去做题。
CTF Crypto(密码学)总结_CTF密码学总结_02
经过一番查找,懂了原理,就总结了一下
CTF Crypto(密码学)总结_百度_03
简单说:
叶子结点:权值
a : 4
d :9
g : 1
f : 5
l : 1
0 : 7
5 : 9
{ : 1
} : 1

画图时最上面的是根,而最优二叉树的规则则是需要权值大的尽量放在上面
例如:
叶子结点:权值
a 7
b 5
c 2
d 4
CTF Crypto(密码学)总结_权值_04
搞懂了这个,但是这个题中还给了我们一堆数

11000111000001010010010101100110110101111101110101011110111111100001000110010110101111001101110001000110

这些代表上面意思那??经过查找发现
发现原来这是哈夫曼树编码详细的介绍

那我们先来完成第一步,画树。
CTF Crypto(密码学)总结_百度翻译_05
一开始没画对,画了三四遍,才算画出来,不过不太熟练,还得练。
画的时候最好从下到上画,先把权值小的画出来,一步一步往上画。

既然画出来了,那就用哈夫曼树编码来把每个数字或字符用编码的方式表示出来。
通过画也发现在同一分支中,哪个权值大,那么哪个就是1。
例如:
17下的d(权值为9)和权值为8的相比,那么d的路径就表示为1.

接下来就是安装这样的方法把那么字符都用编码表示出来

f:110
l:00111
a:000
g:00101
.....

下面都这样表示
接下来就开始进行比对

11000111000001010010010101100110110101111101110101011110111111100001000110010110101111001101110001000110

一般CTF题的提交格式都是flag{…}
所以我们这里就首先看第一个是不是f
110 恰好对应 f
00111 恰好对应 l
000 恰好对应 a
00101 恰好对应 g
前面对应了几乎就没啥子问题了,但是还有一点比较坑的有的因为权值相等,需要在转换的时候看是否应该换一下位置。
例如:
{} 权值相等,在转化时看是否需要进行换位置。

我们再观察我们上面画的图,其中5d的权值也相同,所以如果提交的答案不对的话,就尝试一下换下位置。
这道题是西湖论剑的题,下面有进入决赛大佬的WP。
关于西湖题的wp

二:传统知识+古典密码
CTF Crypto(密码学)总结_CTF密码学总结_06
在实验吧上做了一道很有意思的题目。
首先就想了解一下传统知识吧
CTF Crypto(密码学)总结_百度翻译_07
在百度上找到六十甲子顺序表,就先对应着把数字写出来。

辛卯28,癸巳30,丙戌23,辛未8,庚辰17,癸酉10,己卯16,癸巳30。
“+甲子60”
(这里有一个疑问,按图来说甲子不应该是1吗??? 为什么会+60。。。其实这里面还是对传统文化的不熟悉,查查百度,如果还晕的话,记住就行了)
CTF Crypto(密码学)总结_CTF密码学总结_08
处理完之后的数
88,90,83,68,77,70,76,90
转换一下ASCII码看看
CTF Crypto(密码学)总结_权值_09
XZSDMFLZ
没思路了。。。
看看题目咋提示的
古典密码
古典密码一般涉及的就是替换移位
就先用栅栏密码试试了
一共8位: 可以分为2个字一组,也可以是4个字一组,都试试。
先用2个字为一组的,解出来栅栏密码在线解密
XMZFSLDZ
再用凯撒密码解密凯撒在线解密
发现有一串字母好像是有点意义的,拿出来试试。
shuangyu
改为大写,因为我们输入的就是大写。
SHUANGYU
CTF{SHUANGYU}
提交结果正确,就不用再往下试了。
这个题有很多好玩的地方,需要了解传统的甲子表,需要了解栅栏密码,要了解凯撒密码。
wiki大佬关于密码学的WP
各种加密方式

三、滴答滴答
CTF Crypto(密码学)总结_权值_10
下载起来,打开后是这样的
CTF Crypto(密码学)总结_CTF密码学总结_11
看过柯南的都应该知道这个是摩斯密码,所以拿去解一下密,看看会出现什么?
摩斯密码解密
CTF Crypto(密码学)总结_CTF密码学总结_12
后面的一堆C和D,但是前面我看到了MORSE(摩斯)后面的应该有意义,百度翻译看一下吧
CTF Crypto(密码学)总结_CTF密码学总结_13
培根???,查一下。
CTF Crypto(密码学)总结_最优二叉树_14
了解培根加密之后,我们就知道那一堆C和D有啥用处了
首先,我们先把C转化为A,D转化为B。
CTF Crypto(密码学)总结_最优二叉树_15
CTF Crypto(密码学)总结_最优二叉树_16
转化完成后,进行解密
培根加密解密
CTF Crypto(密码学)总结_百度_17
结果出来了,百度翻译一下。
CTF Crypto(密码学)总结_CTF密码学总结_18
当时在这里卡了,猛的一下不知道啥意思。。。还是太菜。经过学长提醒。。。
栅栏密码,猛的一下明白了,原来ZGIAHYANAUOZNXWI这个就是密文,而且也提示了四道栅栏,所以每组四个字。
CTF Crypto(密码学)总结_权值_19
章鱼小丸子
至于提交就有点坑了,不用flag{}格式,直接提交就行。不过这道题确实很有意思,了解了摩斯密码,培根密码,栅栏密码。不过还得练,还是太菜,有的时候就是想不到。。。
CTF Crypto(密码学)总结_百度_20