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/
作者
xqcherry
发布于
2026-09-17
许可协议
CC BY-NC-SA 4.0