文章目录
基础
所谓经典加密法,就是以单个字母或字符组为作用对象的加密法。
前者被称为单图加密法(monographic cipher),又分为单码加密法和多码加密法:单码加密法的特征是每个明文的字母唯一映射到一个密文字母,多码加密法的特征是一个明文字母可能会映射到多个密文字母,一个密文字母也能映射到多个明文字母。单码加密法的致命缺点是无法抵抗频率分析,因此出现了多码加密法。
后者被称为多图加密法(polygraphic cipher)。
基本方法
- 替换加密法:每个明文字母被其他字母替换生成密文。
- 换位加密法:明文中的每个字母都没有改变,只是换了位置便可生成密文。
恺撒加密法(单码替换)
算法描述
把明文中的每个字母用其右边的第三个字母替换,如用 d 替换 a。
示例
明文:this
密文:wklv
破解
此种加密法只有25种可能的移位数,穷举即可。
关键词加密法(单码替换)
算法描述
选择一个关键词,如果其有重复的字母,则去重,如 success -> suce。将该关键词写在字母表的下方,其他位置补全,这样每个明文字母就可唯一映射到一个密文字母。
示例
破解
假设Eve已知通信双方使用了关键词加密法,明文是标准英语。
频率信息:根据这种加密算法的特点可以推出:所有的明文字母都已被唯一的密文替代。而在标准英语中,出现频率最高的字母是 e,那么在截获的密文中,必定也会有类似特征。
多联字母:标准英语中,有常常出现在一起的字母对,如 th he er。
通过这些手段可能获取密钥。
Vigenere加密法(多码替换)
示例
如明文为:“thisistheplaintext”,选取密钥为“hold”,设置其关联如图
然后借助Vigenere表,如下:
在关联对中,以密钥字母作为行下标,以明文字母作为列下标,在表中查找对应字母。
如第一对为“ht”,则可查找到表中的 h 行 t 列,对应字母为 “a”,此即为明文字母 t 对应的密文,其余同理。
最终生成的密文如下:
可以看到密文 v 既可对应明文 o,又能对应 s,从根本上抵御了频率分析。
破解
直接进行频率分析失效
Kasiski法:如果明文中包含重复的字母串,则密文中也可能会包含重复的字符串。如:
明文tobe密钥RUNR两次生成了密文KIOV,明文th密钥UN两次生成了密文NU,其间距分别为9个字符与6个字符,则这些间距必然为密钥长度的倍数,计算其最大公约数即可。
确定出密钥长度之后,多码加密法的破解就变成了多个不同单码加密法的破解,如图:
如图,ljkfoxusjk都是用同一字母a加密的,可继续使用频率分析方法进行破解。
Playfair加密法(双图替换)
示例
选取一个密钥,如“telegram”,将其扩展为一个5x5的正方形(去重、去掉字母 j后填充),如下图:
根据以下规则生成密文:若两明文字符
- 出现在正方形的同一行,则选取右边的字符作为密文。
- 出现在正方形的同一列,则选取下方的字母作为密文。
- 出现在不同的行和列,则其可构成一个正方形,选取另外两个顶点的字母作为明文。
置换加密法(单图换位)
算法描述
首先将明文分成固定长度的块,记为 d,选取一个置换函数 f,f 的作用是从 1~d 内选取一个整数。例如,假设 d 为4,f 为(2,4, 1, 3),即:第一个字符移到位置2,第二个字符移到位置4…以此类推生成密文,注意最后一个块应当使用空字符补齐。
破解
使用已知明文攻击是最简单的方式。