凯撒移位密码
发布 2026 年 8 月 30 日 · · 6 分钟阅读
大多数人接触的第一个字母密码:每个字母沿字母表向后移动固定位数。学会它大约要九十秒,破译它大约要四分钟——正因如此,它最值得先学。
- 时代
- 古典时代
- 类型
- 替换
- 密钥空间
- 25 shifts
- 难度
- 入门
I现象
拿句子 ATTACK AT DAWN,把每个字母向后推三位:A 变 D,T 变 W,消息离室时已成 DWWDFN DW GDZQ。
字母本身没有变,只是标签换了。词长保留、标点保留,明文中重复的字母在密文里以完全相同的间隔重复。ATTACK 在第 2、3 位有双 T,DWWDFN 就在第 2、3 位有双 W。
这种形状的残留正是攻击者可读的入口。密文不是另一种语言,只是同一种语言换了制服。
| 明文特征 | 移位后的特征 | 仍然泄露的东西 |
|---|---|---|
| 叠字母 | 叠字母 | 词的形状 |
| 单字母词 | 单字母词 | A 和 I 依然扎眼 |
| 词长 | 词长 | 句子的节奏 |
| 字母频率 | 被旋转的频率 | E 仍是最高的柱子,只是换了名字 |
II密钥空间
密钥是一个整数,而其中只有 25 个会产生不同结果。移位 26 等于没移,移位 27 与移位 1 完全相同,所以不同密钥的全集就是 25。
log2(25) 约等于 4.64 比特。作为对比,现代对称密钥是 128 比特:凯撒的密钥空间比“抛五次硬币”还小。
比数字更重要的是结构。因为任一字母的加密只取决于该字母本身,这个密码没有记忆。用移位 3 加密 AAAA 永远得到 DDDD:没有上下文、没有链式、没有状态。没有状态的密码可以逐字母攻破。
从这里学到的经验:如果密钥比消息短,那消息本身就是密钥。
III加密步骤
- 把明文写成大写:ATTACK AT DAWN。
- 选定移位量。据记载凯撒本人用的是三。
- 把字母表写两遍,第二遍按密钥后移:A B C D E ... / D E F G H ...
- 把每个明文字母替换为移位行中正下方的字母。
- 保留分词。空格留或去取决于约定——对安全性没有任何影响。
- 消息较长时按五个一组断开:DWWDF NDWGD ZQ。
IV解密步骤
- 统计密文字母及其出现频率。
- 与该语言的频率画像比对。英文中最高的柱子是 E,第二通常是 T 或 A。
- 相减即得移位量。若密文里最高的字母是 H,则移位量是三。
- 把整段密文反向移动该数量后通读。
- 若读不通,试第二、第三高的柱子——短消息噪声大,最高的柱子未必是 E。
V弱点
频率分析。 英文散文中 E、T、A、O、I 合计约占全部字母的 40%。统计几百个字符的凯撒密文,最高的那根柱子几乎一定是 E——用减法就得到移位量。
暴力破解极其简单。 25 个密钥,手算一刻钟就够。把密文抄一遍,每行移动一位,从上往下读,总有一行读得通。
已知明文即致命。 只要攻击者知道一个预期词——签名、日期、军报里的 ATTACK——比较一个字母就能立刻得出移位量。
它从未真正消失。 本密码的 ROT13 变体至今仍用在 Usenet 和网络论坛上遮挡剧透,不是因为安全,而是因为一行代码可逆、人人能在脑子里读懂。
VI实战挑战
密文
WKHROGORRPQHYHUVWRSV
提示: 向前移了三位,反着移回来。
展开答案
明文
THE OLD LOOM NEVER STOPS
·史料
二世纪的苏维托尼乌斯记载:尤利乌斯·凯撒对机密通信使用移位三,其甥奥古斯都则用另一种移位,并且“能明文写的绝不加密写”。这一手法早于这个名字本身:希伯来与希腊文献中数百年前就出现过移位字母表。它在自己的时代从未被破——终结它的是频率分析的发明,通常归于九世纪阿拉伯学者阿尔·金迪的《解密手稿》,那是已知最早的文字密码分析著作。
·继续读
有两条经验会贯穿本织机上的后续所有条目。
第一:替换密码的强度只取决于可用替换的数量。25 种移位就是 25 个替换字母表;而一个完全混合的字母表有 26! 个密钥——真正的军备竞赛从那里开始。
第二:杀死凯撒的攻击——数字母——同样能杀死几乎所有单表替换密码,这也是本合集里所有多表密码存在的原因。一旦你学会数数,就需要一个让计数失去意义的密码。
下一台织机:atbash-cipher 用的是镜像而不是移位,而且它和凯撒不同,是自逆的。