简单古典密码
1. 簡單移位密碼
m = "{easy_easy_crypto}"
k = 3124
| 密文所在位置 | 3 | 1 | 2 | 4 |
| lafg | ea{s | _eya | y_sc | yprt | }o |
攻擊方法:肉眼識別/爆破秘鑰/根據flag字符串逆推
2. 曲路密碼
- 明文填入一個表中,并按照一定的曲路遍歷攻擊方法:逆向通力
明文:abcdefghijklmnopqrstuvwxy
密文:ejotyxcnidchmrwvqlgbafkpu
3. 云影密碼
- 云影密碼僅包含01248五個數字,其中0用于分割,其余數字用于做和之后轉換為明文
密文:8842101220480224404014224202480122
明文:welldone
解密方式:將密文用0分割,然后將其余每組數字求和得到i,再到26個字母中找第i個字母
4. 柵欄密碼
- 其秘鑰只有一個數字k,表示柵欄的長度
- 加密時,遍歷x(0-k):把要加密的明文分成k個一組,然后取每組第x個字符依次連接
m="flagizhalan_mima_hahaha}"
k=4
flag {zha lan_ mima _hah aha}
總共分成了6份,而后依次取出每組第1個:f{lm_a
依次取出第2個,第3個,第4個,放置在后面:f{lm_alzaihhahnmaaga_ah}
攻擊方法:爆破柵欄長度
5. 凱撒密碼
- 凱撒密碼通過把字母在字母表上移動一定的位數來實現加密和解密>偏移量是3的時候,所有的字母A將被替換成D,B變成E
- 偏移量為4的時候,字母的替代如下所示
ABCDEFGHIKLMNOPORSTUVWXYZ->EFGHIJKLMNOPQRSTUVWXYZABCD - 雖然可以詞頻分析,但是密鑰空間太小了,直接爆破
替代密碼都可以用詞頻分析
6. 培根密碼
- 培根密碼一般使用兩種不同的字體表示密文,密文的內容不關鍵,字體較為關鍵。比如給了一段文字,里面有正常的字,也有斜體,那就是培根密碼。
- 使用AB代表兩種字體,五個一組,表示密文:
- 解密的話可以使用在線的工具:http://rumkin.com/tools/cipher/baconian.php
7. 豬圈密碼(圖形替代密碼)
- 將明文用圖形進行替代實現加密。豬圈密碼是用不同的格子來表示不同的字母:
8. 仿射密碼
-
仿射密碼的替代表的生成方式依據:c=am+b mod n
-
m為明文對應字母得到的數字
-
n為字符數量
-
c為密文
-
a和b為密鑰
-
解密:要求a關于n的逆元:m=modinv(a)(c-b) mod n
-
攻擊方法:
-
爆破
-
詞頻統計
-
已知明文攻擊:如果知道一對(m,c),那么知道a和b是簡單的
9. 維吉尼亞密碼(多表替代)
- 在凱撒密碼中,可以用一個字母表示出來完整的替換表(只要確定用來來替換A的是什么),比如可以用E表示:
ABCDEFGHIIKLMNOPORSTUVWXYZ
EFGHIJKLMNOPQRSTUVWXYZABCD - 維吉尼亞密碼的密鑰不再是固定不變的,而是隨著位置產生改變的。比如如果密鑰是:LOVE,那么明文每四個一組進行循環,使用的替換表依次為
L-LMNOPQRSTUVWXYZABCDEFGHIJK
O-OPQRSTUVWXYZABCDEFGHIJKLMN
V-VWXYZABCDEFGHIJKLMNOPQRSTU
E-EFGHIIKLMNOPORSTUVWXYZABCD - 維吉尼亞密碼也要用詞頻統計來攻擊
詞頻統計:
- 依賴在英語語言中字母的使用頻率(e:12.702,…)
- 單表替換:統計所有字母的頻率,然后替換頻率最為接近的
- 多表替換:抽取使用相同替換表的所有密文,然后使用單表替換的思路(對抽出來的每一組密文進行詞頻統計,更換為明文)
- 自動化: http://quipqiup.com/
總結
- 上一篇: sqli-labs第一关(MySql基础
- 下一篇: 【转载】如何在服务器上部署Jupyter