CTF Crypto(密码学)总结
最近接觸了一些密碼學的題,感覺特別有意思,寫下博客來記錄一下,以免忘記
一:哈夫曼樹
哈夫曼樹(也稱為最優二叉樹),雖然(目前)沒學,但是百度、谷歌大法無敵。
查查原理,再去做題。
經過一番查找,懂了原理,就總結了一下
簡單說:
葉子結點:權值
a : 4
d :9
g : 1
f : 5
l : 1
0 : 7
5 : 9
{ : 1
} : 1
畫圖時最上面的是根,而最優二叉樹的規則則是需要權值大的盡量放在上面
例如:
葉子結點:權值
a 7
b 5
c 2
d 4
搞懂了這個,但是這個題中還給了我們一堆數
這些代表上面意思那??經過查找發現
發現原來這是哈夫曼樹編碼詳細的介紹
那我們先來完成第一步,畫樹。
一開始沒畫對,畫了三四遍,才算畫出來,不過不太熟練,還得練。
畫的時候最好從下到上畫,先把權值小的畫出來,一步一步往上畫。
既然畫出來了,那就用哈夫曼樹編碼來把每個數字或字符用編碼的方式表示出來。
通過畫也發現在同一分支中,哪個權值大,那么哪個就是1。
例如:
17下的d(權值為9)和權值為8的相比,那么d的路徑就表示為1.
接下來就是安裝這樣的方法把那么字符都用編碼表示出來
f:110 l:00111 a:000 g:00101 .....下面都這樣表示
接下來就開始進行比對
一般CTF題的提交格式都是flag{…}
所以我們這里就首先看第一個是不是f
110 恰好對應 f
00111 恰好對應 l
000 恰好對應 a
00101 恰好對應 g
前面對應了幾乎就沒啥子問題了,但是還有一點比較坑的有的因為權值相等,需要在轉換的時候看是否應該換一下位置。
例如:
{ 和 } 權值相等,在轉化時看是否需要進行換位置。
我們再觀察我們上面畫的圖,其中5和d的權值也相同,所以如果提交的答案不對的話,就嘗試一下換下位置。
這道題是西湖論劍的題,下面有進入決賽大佬的WP。
關于西湖題的wp
二:傳統知識+古典密碼
在實驗吧上做了一道很有意思的題目。
首先就想了解一下傳統知識吧
在百度上找到六十甲子順序表,就先對應著把數字寫出來。
辛卯28,癸巳30,丙戌23,辛未8,庚辰17,癸酉10,己卯16,癸巳30。
“+甲子60”
(這里有一個疑問,按圖來說甲子不應該是1嗎??? 為什么會+60。。。其實這里面還是對傳統文化的不熟悉,查查百度,如果還暈的話,記住就行了)
處理完之后的數
88,90,83,68,77,70,76,90
轉換一下ASCII碼看看
XZSDMFLZ
沒思路了。。。
看看題目咋提示的
古典密碼
古典密碼一般涉及的就是替換或移位
就先用柵欄密碼試試了
一共8位: 可以分為2個字一組,也可以是4個字一組,都試試。
先用2個字為一組的,解出來柵欄密碼在線解密
XMZFSLDZ
再用凱撒密碼解密凱撒在線解密
發現有一串字母好像是有點意義的,拿出來試試。
shuangyu
改為大寫,因為我們輸入的就是大寫。
SHUANGYU
CTF{SHUANGYU}
提交結果正確,就不用再往下試了。
這個題有很多好玩的地方,需要了解傳統的甲子表,需要了解柵欄密碼,要了解凱撒密碼。
wiki大佬關于密碼學的WP
各種加密方式
三、滴答滴答
下載起來,打開后是這樣的
看過柯南的都應該知道這個是摩斯密碼,所以拿去解一下密,看看會出現什么?
摩斯密碼解密
后面的一堆C和D,但是前面我看到了MORSE(摩斯)后面的應該有意義,百度翻譯看一下吧
培根???,查一下。
了解培根加密之后,我們就知道那一堆C和D有啥用處了
首先,我們先把C轉化為A,D轉化為B。
轉化完成后,進行解密
培根加密解密
結果出來了,百度翻譯一下。
當時在這里卡了,猛的一下不知道啥意思。。。還是太菜。經過學長提醒。。。
是柵欄密碼,猛的一下明白了,原來ZGIAHYANAUOZNXWI這個就是密文,而且也提示了四道柵欄,所以每組四個字。
章魚小丸子
至于提交就有點坑了,不用flag{}格式,直接提交就行。不過這道題確實很有意思,了解了摩斯密碼,培根密碼,柵欄密碼。不過還得練,還是太菜,有的時候就是想不到。。。
總結
以上是生活随笔為你收集整理的CTF Crypto(密码学)总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP学习(php概念、基本语法、流程控
- 下一篇: HTML+CSS+PHP+COOKIE在