Crypto 1
棒棒的練習資源
- 編碼
- 古典密碼
- 穿插「ㄧ」點數學
- 流加密
- 對稱式加密
先裝套件
pip install pycryptodome
什麼是編碼
「編碼器(英語:Encoder)是一種將資訊由一種特定格式轉換為其他特定格式的感測器、軟體或是演算法,轉換的目的可能是由於標準化、速度、保密性、保安或是為了壓縮資料。」——維基百科
常見文字編碼
- ASCI
- 用一個 byte 來表示字母、數字、符號,是針對英文設計的,Unicode的最初128個字符與ASCII完全相同 (因為只有了 128 種可能,所以最左邊的 bit 永遠是 0)
- UTF-8
- 用 1~4 bytes 來表示一個字符,也包含了 ASCII 的字符,因為 ASCII 的字符只用 1 byte 表示,所以 UTF-8 能完全兼容原先是 ASCII 編碼的文件
- 容納了各國語言,算是 Unicode 的一種實現方式
- HEX (16 進位)
- Base64
- 用 64 個字符來表示二進位數據,常用於在 URL、Cookie、網頁中傳輸少量二進位數據,常見編碼結果會有 =, ==
Lab - Complex Encoder
要先用 Base64 解碼,再用 HEX 解碼
Lab - F**k Encoder
用 BrainFuck 和 JSFuck 都試試看,然後發現用 JSFuck 解密 Flag 就出來了
古典密碼學
加解密的用途
即便被攔截如果加解密夠好,也能確保密文不被破譯
常見的加解密
- 凱薩密碼
- 簡易替換密碼
-
- 解密方式:頻率分析
-
- 維吉尼亞密碼(Vigenere)
-
-
- 用密鑰長度切分,每一段相同位置的偏移量會相同 (例如上圖的CSASTPK的 K 和 CSASTPI 的 I 同樣都是向右偏移兩格) ,這樣就能分別對相同位置的字幕做頻率分析
- 波雷費密碼 (Playfair)
- 柵欄密碼 (Rail fence)
-
- 密鑰是有幾個
_
Lab - vigenere cipher
線上解密工具
然後找了一下就發現了一個看起來像正確 flag 的字串
Lab - secure substitution
[線上解密工具](secure substitution)
丟上去跑出來的第一個就是 Flag 了
參考資料