1. 简单移位密码
m = "{easy_easy_crypto}"
k = 3124
明文所在位置 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
密文所在位置 | 3 | 1 | 2 | 4 |
flag | {eas | y_ea | sy_c | rypt | o} |
---|---|---|---|---|---|
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/