什么是凯撒密码(Caesar Cipher)?
凯撒密码是一种单表替换密码,通过将明文中的每个字母沿字母表固定位移若干位来加密消息。位移量为 3 时,A 变为 D,B 变为 E,Z 循环回绕变为 C。凯撒密码又称移位密码、加法密码、旋转密码或凯撒位移,得名于古罗马将军 Julius Caesar——据历史学家 Suetonius 记载,他在高卢战争(公元前 58–50 年)期间使用位移量为 3 的加密方式来保护敏感军事通信。
尽管结构简单,凯撒密码在历史上具有重要意义:它是西方文明中最早有据可查的加密技术之一,也是所有现代替换密码在概念上的基础。如今,它被广泛用作密码学入门课程的教学工具,以及地理寻宝、密室逃脱等益智游戏中的谜题。
凯撒密码的工作原理
该密码遵循一条规则:将每个字母替换为字母表中其后固定位数的字母。这个固定数字称为位移值(也称为密钥或旋转量)。字母表被视为循环排列,Z 之后为 A。
加密公式
单个字母的加密过程可用数学表达式表示为:
E(x) = (x + n) mod 26
其中 x 是明文字母的数字位置(A = 0,B = 1,… Z = 25),n 是位移值。mod 26 运算确保结果在 26 个字母的范围内循环。
解密公式
解密过程通过减去位移量来还原:
D(x) = (x − n + 26) mod 26
模运算前加 26 是为了防止当密文字母位于字母表前部(位置值小于位移量)时出现负数。
逐步加密示例
以下是使用位移量 4 加密单词 ATTACK 的过程:
| 步骤 | 明文 | 位置 (x) | x + 4 | mod 26 | 密文 |
|---|---|---|---|---|---|
| 1 | A | 0 | 4 | 4 | E |
| 2 | T | 19 | 23 | 23 | X |
| 3 | T | 19 | 23 | 23 | X |
| 4 | A | 0 | 4 | 4 | E |
| 5 | C | 2 | 6 | 6 | G |
| 6 | K | 10 | 14 | 14 | O |
结果: ATTACK → EXXEGO(位移量 4)
注意,相同的明文字母总是映射到相同的密文字母——两个 T 都变为 X。这种可预测的一对一映射正是单表密码容易被频率分析攻破的原因。
逐步解密示例
解密过程完全相反。已知密文 EXXEGO 和位移量 4,对每个字母的位置减去 4:
| 步骤 | 密文 | 位置 (x) | x − 4 + 26 | mod 26 | 明文 |
|---|---|---|---|---|---|
| 1 | E | 4 | 26 | 0 | A |
| 2 | X | 23 | 45 | 19 | T |
| 3 | X | 23 | 45 | 19 | T |
| 4 | E | 4 | 26 | 0 | A |
| 5 | G | 6 | 28 | 2 | C |
| 6 | O | 14 | 36 | 10 | K |
结果: EXXEGO → ATTACK(位移量 4)
公式中加 26 是为了防止密文字母位于字母表中位移起点之前时出现负数。
如何识别凯撒密文
在尝试破解密码之前,判断是否面对凯撒密码很有帮助。以下几个特征可帮助识别凯撒加密文本:
- 仅含字母。 经典凯撒密码保留空格和标点符号,只转换字母字符。如果密文仅包含标准字母且单词间距正常,则可能是凯撒加密。
- 单词长度不变。 由于密码逐字母操作而不重新分组,单词边界和长度与明文完全相同。一个 5 字母的单词加密后仍为 5 字母。
- 频率分布整体偏移但形状相似。 密文的字母频率分布与英语相似,但发生了位移。绘制频率图时,熟悉的"ETAOIN SHRDLU"模式会出现偏移,偏移量即为位移值。
- 无异常字符。 与摩尔斯电码(点和横线)、Base64(字母数字 + /=)或波利比奥斯方阵(数字对)不同,凯撒密文看起来像普通文本,只是无法理解。
本站的密码识别器工具可以自动检测给定密文是否可能是凯撒加密,并建议可能的位移值。
全部 25 种位移值
由于英语字母表有 26 个字母,共有 25 个有效位移值(位移量 1 至 25)。位移量为 0 或 26 时文本保持不变。这个极小的密钥空间是凯撒密码极易被破解的主要原因。
本页上方的位移参考表展示了每个位移值对应的完整密文字母表。常见的位移值包括:
- 位移量 1 — 奥古斯都密码;变换程度最小,有时用于简单谜题。
- 位移量 3 — 凯撒的原始位移,历史上最具意义的值。
- 位移量 10 — 常用于教学示例,因为偏移量便于心算。
- 位移量 13(ROT13) — 最著名的变体。因为 13 恰好是 26 的一半,应用 ROT13 两次可还原原文,具有自逆性。这一特性使 ROT13 特别适合在互联网论坛和 Usenet 讨论组中隐藏剧透、谜题答案和笑话包袱。
- 位移量 25 — 等效于向后位移 1;产生反向邻接映射(与位移量 1 组合则形成 A↔Z)。
处理数字、标点及扩展字符
经典凯撒密码只转换拉丁字母表中的 26 个字母,空格、数字和标点通常保持不变。不过,存在几种处理非字母字符的扩展变体:
- ROT5 用于数字。 对数字 0–9 应用位移量 5(循环回绕),即 0→5,1→6,……,5→0。通常与 ROT13 组合为 ROT18,同时对字母位移 13,对数字位移 5。
- ROT47 用于 ASCII。 将旋转扩展至 94 个可打印 ASCII 字符(编码 33–126),每个字符位移 47 位。这样数字、标点和字母都会被转换,产生更彻底的混淆效果。与 ROT13 一样,ROT47 也是自逆的。
- 自定义字母表扩展。 某些实现将字母表扩展为包含数字和常见符号,建立更大的字符集(如 36 或 62 个字符),并对扩展集进行模运算。
大多数教学和益智应用中,除非明确说明,否则默认使用标准 26 字母版本。
相关经典密码
凯撒密码属于一个随着时间推移不断演变的替换密码家族:
- Atbash 密码 — 一种希伯来镜像密码,将字母表倒序排列(A↔Z,B↔Y)。比凯撒密码早几个世纪,曾用于编码希伯来《圣经》中的名字。
- ROT13 — 位移量为 13 的凯撒密码。其自逆特性使其在互联网上的日常文本混淆中独具实用价值。
- 仿射密码 — 凯撒密码的推广,使用公式 E(x) = (ax + b) mod 26,其中 a 和 b 为密钥。凯撒密码是 a = 1 时的特例。
- 维吉尼亚密码(Vigenère Cipher) — 使用关键字对每个字母位置应用不同的凯撒位移,形成多表替换密码,在长达 300 年内抵御了密码分析。
- 关键字密码 — 根据秘密关键字重新排列密文字母表,而非简单位移,将密钥空间从 25 扩大到约 26!(阶乘)种可能。
- 博福特密码 — 维吉尼亚密码的互逆变体,关键字字母从明文位置中相减而非相加。
延伸阅读
想深入了解凯撒密码的密码分析、历史和代码实现?请参阅我们的详细指南:
- 破解凯撒密码:暴力破解、频率分析与卡方检验 — 学习三种经过验证的凯撒加密破解技术
- 凯撒密码历史:从 Julius Caesar 到现代 — 探索这一基础加密方法 2000 年的历史历程
- Python 凯撒密码:完整编程教程 — 附源代码的完整实现指南