611 字
3 分钟
从置换到代换:古典密码的两种基本思路
古典密码的实现各不相同,但可以归结为两种操作:置换改变符号的位置,代换改变符号本身。现代分组密码中的扩散与混淆,也能看到这两种思想的影子。
阅读目标这篇内容用于建立直觉,而非推荐实际使用这些算法。古典密码的密钥空间小、统计特征明显,不能用于现代安全通信。
两条设计路线
| 方法 | 改变的对象 | 典型算法 | 直观效果 |
|---|---|---|---|
| 置换 | 字符的位置 | 密码棒、栅栏密码 | 字符没变,顺序被打乱 |
| 代换 | 字符本身 | 凯撒、维吉尼亚、Playfair | 顺序不变,符号被替换 |
置换:重新排列已有字符
斯巴达密码棒
发送者把纸带缠在固定粗细的圆柱上,沿圆柱逐行写入明文,再沿纸带读出密文。接收者只有使用相同粗细的密码棒,才能恢复正确的排列顺序;因此密码棒的尺寸就是密钥。
栅栏密码
以两行为例,把 HELLOWORLD 按“之”字形写入,再逐行读出:
H L O O L E L W R D
密文:HLOOLELWRD栅栏行数(或深度)是密钥。行数有限且字符频率没有被改变,因此它很容易被分析破解。
代换:用另一个符号替换原符号
凯撒密码
把每个字母在字母表中向后移动固定距离;例如偏移 +3 时,HELLO 变为 KHOOR。密钥就是移动位数。
维吉尼亚密码
维吉尼亚密码使用重复的关键字提供多个偏移量。对 HELLOWORLD 使用 KEYKEYKEYK,每个位置分别按对应字母的偏移量移动,可得到 RIJVSUYVJN。
相比凯撒密码,它不再是单表代换;但重复密钥会留下周期性,仍可借助频率分析破解。
Playfair 密码
Playfair 使用密钥构造 5×5 字母方阵(通常合并 I/J),每两个字符作为一组替换,因此属于多字母组代换。它比逐字符代换更难直接做频率分析,但并不具备现代密码学意义上的安全性。
小结
置换负责“打乱位置”,代换负责“隐藏符号”。现代密码通常会多轮组合非线性代换和线性置换,而不是单独依赖其中一种操作。
从置换到代换:古典密码的两种基本思路
https://blog.xqcherry.top/posts/cryptography/classical-ciphers/