跳到正文
Cipherloom密码织机

CIPHER/SUBSTITUTION/CAESAR SHIFT

凯撒移位密码

发布 2026 年 8 月 30 日 · · 6 分钟阅读

大多数人接触的第一个字母密码:每个字母沿字母表向后移动固定位数。学会它大约要九十秒,破译它大约要四分钟——正因如此,它最值得先学。

时代
古典时代
类型
替换
密钥空间
25 shifts
难度
入门
密文栅格图版:凯撒移位密码
图版 caesar-shift · 替换

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 用的是镜像而不是移位,而且它和凯撒不同,是自逆的。

+相关织线