博福特密码指南:自逆加密及其与维吉尼亚密码的区别
深入掌握博福特密码的自逆特性。学习公式 B(p,k) = (k - p) mod 26、逐步示例,以及它与维吉尼亚密码的比较。
简介
博福特密码是历史上颇值得深入研究的密码之一。表面上看,它不过是维吉尼亚密码的一个小变体——事实上,两者确实密切相关。但博福特密码拥有一项维吉尼亚密码所不具备的特性:自逆性。加密与解密是同一种操作。正是这一区别使博福特密码在实际应用中颇具吸引力,尤其是在军事和海军场景中,因为在高压状态下,操作的简便性至关重要。
该密码以弗朗西斯·博福特爵士命名。他是爱尔兰裔英国皇家海军水文学家,以博福特风力等级而闻名于世。博福特密码使用公式 B(p, k) = (k - p) mod 26。这个减法——密钥减去明文,而非密钥加上明文——正是其自逆特性的来源,也是它与维吉尼亚体系的根本差异所在。
试用我们的免费博福特密码工具,即时加密和解密消息。
弗朗西斯·博福特爵士:密码背后的人物
海上生涯
弗朗西斯·博福特于 1774 年出生于爱尔兰米斯郡纳文。他的父亲丹尼尔·奥古斯都·博福特牧师是一位神职人员兼制图师,绘制了爱尔兰最早的详细地图之一。年轻的博福特十三岁便出海,先加入东印度公司,后转入英国皇家海军。他早年的军旅生涯充满冒险与磨砺:十四岁时在南海遭遇船难,拿破仑战争期间经历激战,1812 年在土耳其海岸执行勘测任务时身负重伤,髋部中了一颗火枪弹,头部也被弯刀划过。
博福特风力等级
博福特最为人熟知的成就是他从 1805 年前后开始制定的风力等级。该等级最初是为他的私人航海日志设计的,将风况从 0 级(无风)到 12 级(飓风)按可观测的海面状态和航行条件加以分类。英国海军部于 1838 年正式采用博福特风力等级,时至今日,经过小幅修订后,它仍是国际通用的海上风速报告标准。
博福特风力等级之所以成功,并非因为其独创性——早期的风级标准早已存在——而在于其实用性。它不需要在颠簸的船上使用那些可能不可用或不可靠的仪器,而是依赖直接观测:海面状态、波浪形态以及风对船索具的影响。这种务实的思路——重视简便可靠而非理论优雅——同样体现在以他名字命名的密码之中。
英国皇家海军水文学家
1829 年,博福特被任命为英国皇家海军水文学家,这一职位他担任了 25 年。任职期间,他主持了海军部制图计划的大规模扩展,向世界各地派遣勘测考察队。1831 年,正是博福特安排了查尔斯·达尔文登上小猎犬号的任命——其影响远超水文学领域。博福特于 1855 年退休,1857 年辞世,他彻底改变了海军制图学的面貌。
密码的渊源
博福特开发或采用以其名字命名的这一密码的具体经过,远不如他在气象学和水文学方面的成就记录翔实。该密码似乎在 19 世纪中叶英国海军和军事圈内流传,博福特与之相关联可能反映了他对实用海军通信系统的广泛兴趣。密码在本世纪晚期被收入多部密码学参考著作后,才得到更广泛的传播。
博福特密码的数学原理
核心公式
博福特密码的加密公式为:
C = (K - P) mod 26
其中:
- C 是密文字母(0–25,A=0,B=1,……,Z=25)
- K 是密钥字母对应的数值
- P 是明文字母对应的数值
- mod 26 确保结果在字母表范围内循环
解密公式为:
P = (K - C) mod 26
请注意一个显著之处:解密公式与加密公式的结构完全相同。两者的运算都是"密钥减去消息"。这就是自逆特性的直接体现。
为何减法产生自逆性
博福特密码的自逆特性直接源于模运算中减法的代数性质。以下是证明过程:
命题: 若 C = (K - P) mod 26,则 P = (K - C) mod 26。
证明:
从加密方程出发: C = (K - P) mod 26
将 C 代入解密公式: (K - C) mod 26 = (K - (K - P)) mod 26 = (K - K + P) mod 26 = P mod 26 = P
由于 0 <= P < 26,结果就是 P 本身,原始明文得以恢复。
这一证明揭示了博福特密码具有该特性、而维吉尼亚密码不具备的原因。维吉尼亚密码通过加法加密:C = (P + K) mod 26。若对解密也使用同样的加法运算,则 (C + K) mod 26 = (P + 2K) mod 26,除非 K = 0(或 K = 13),否则不等于 P。维吉尼亚密码的非对称性决定了它必须使用不同的解密公式:P = (C - K) mod 26。
使用 Tabula Recta 表
博福特密码可以使用标准的 Tabula Recta 表(即用于维吉尼亚密码的同一张 26×26 表格)来执行,但查表步骤有所不同:
- 在 Tabula Recta 表的顶行找到明文字母。
- 沿该列向下找到密钥字母。
- 读取左侧的行标签,即为密文字母。
这本质上是维吉尼亚密码查表步骤的逆操作——维吉尼亚密码先找到密钥所在行,再沿行读取;而博福特密码先定位明文所在列,再在列中查找密钥。
完整加密示例
以关键词"SAIL"加密消息"WIND FROM NORTH"。
第一步:去掉空格,对齐关键词。
Key: S A I L S A I L S A I L S A
Plain: W I N D F R O M N O R T H W
第二步:转换为数字。
| 位置 | 密钥 (K) | 明文 (P) | K 值 | P 值 |
|---|---|---|---|---|
| 1 | S | W | 18 | 22 |
| 2 | A | I | 0 | 8 |
| 3 | I | N | 8 | 13 |
| 4 | L | D | 11 | 3 |
| 5 | S | F | 18 | 5 |
| 6 | A | R | 0 | 17 |
| 7 | I | O | 8 | 14 |
| 8 | L | M | 11 | 12 |
| 9 | S | N | 18 | 13 |
| 10 | A | O | 0 | 14 |
| 11 | I | R | 8 | 17 |
| 12 | L | T | 11 | 19 |
| 13 | S | H | 18 | 7 |
| 14 | A | W | 0 | 22 |
第三步:应用公式 C = (K - P) mod 26。
| 位置 | (K - P) | mod 26 | 密文字母 |
|---|---|---|---|
| 1 | 18-22 = -4 | 22 | W |
| 2 | 0-8 = -8 | 18 | S |
| 3 | 8-13 = -5 | 21 | V |
| 4 | 11-3 = 8 | 8 | I |
| 5 | 18-5 = 13 | 13 | N |
| 6 | 0-17 = -17 | 9 | J |
| 7 | 8-14 = -6 | 20 | U |
| 8 | 11-12 = -1 | 25 | Z |
| 9 | 18-13 = 5 | 5 | F |
| 10 | 0-14 = -14 | 12 | M |
| 11 | 8-17 = -9 | 17 | R |
| 12 | 11-19 = -8 | 18 | S |
| 13 | 18-7 = 11 | 11 | L |
| 14 | 0-22 = -22 | 4 | E |
结果:
Plain: W I N D F R O M N O R T H W
Key: S A I L S A I L S A I L S A
Cipher: W S V I N J U Z F M R S L E
第四步:解密验证。 对密文应用 C = (K - P) mod 26:
- 位置 1:(18 - 22) mod 26 = -4 mod 26 = 22 → W(正确)
- 位置 2:(0 - 18) mod 26 = -18 mod 26 = 8 → I(正确)
同一操作即可完成解密,无需另外的算法。
博福特密码、维吉尼亚密码与变体博福特密码的比较
三种密切相关的密码常被混淆。理解它们的差异有助于厘清多表替换密码的数学全貌。
维吉尼亚密码
加密: C = (P + K) mod 26 解密: P = (C - K) mod 26
维吉尼亚密码将密钥加到明文上。解密需要减法。它不是自逆的。
博福特密码
加密: C = (K - P) mod 26 解密: P = (K - C) mod 26
博福特密码从密钥中减去明文。加密和解密公式在结构上完全相同(均以密钥减去"消息")。它是自逆的。
变体博福特密码
加密: C = (P - K) mod 26 解密: P = (C + K) mod 26
变体博福特密码从明文中减去密钥。这实际上等同于将维吉尼亚解密公式用作加密步骤。它不是自逆的。变体博福特密码有时与真正的博福特密码相混淆,但两者是截然不同的体系。
对比表
| 属性 | 维吉尼亚密码 | 博福特密码 | 变体博福特密码 |
|---|---|---|---|
| 加密公式 | P + K | K - P | P - K |
| 解密公式 | C - K | K - C | C + K |
| 自逆性 | 否 | 是 | 否 |
| 等价关系 | -- | 维吉尼亚加密后反转字母表 | 维吉尼亚解密 |
三者之间的关系
三种密码之间存在优雅的数学关联。博福特密码可以表示为两个简单操作的复合:
- 施加维吉尼亚加密:V = (P + K) mod 26
- 施加 Atbash(反转字母表)替换:C = (25 - V) mod 26
合并:C = 25 - (P + K) mod 26 = (25 - P - K) mod 26。
稍等——这与 (K - P) mod 26 并不完全相等。让我们更仔细地推导。实际关系是:
C_beaufort = (K - P) mod 26 = (-(P - K)) mod 26
而 C_variant_beaufort = (P - K) mod 26。
因此,博福特密文是变体博福特密文的"补数":C_beaufort = (-C_variant_beaufort) mod 26 = (26 - C_variant_beaufort) mod 26。
这意味着可以通过先施加变体博福特加密(即等同于维吉尼亚解密),再反转字母表(施加 A=Z、B=Y、C=X……替换)来实现博福特加密。或者,也可以先对明文施加 Atbash,再施加维吉尼亚加密。
博福特密码的密码分析
Kasiski 检测法
与所有使用重复关键词的多表替换密码一样,博福特密码容易受到 Kasiski 检测法的攻击。当同一明文片段在消息的不同位置与同一关键词片段对齐时,就会产生相同的密文序列。这些重复序列之间的间距是关键词长度的倍数。通过求若干间距的最大公约数,密码分析者可以确定(或缩小)关键词长度的范围。
重合指数
一旦假设关键词长度为 n,可将密文拆分为 n 个子流,每个子流仅用单个密钥字母加密。对每个子流计算重合指数(IC)。如果 IC 接近英文文本的期望值(约 0.0667),则假设的关键词长度很可能正确;如果 IC 更接近随机基线(约 0.0385),则假设的长度很可能有误。
按子流进行频率分析
确定关键词长度并将密文拆分为单密钥子流后,每个子流实际上是一个简单替换密码(具体而言,是一种"反向凯撒"位移)。此后可对每个子流单独进行频率分析。
对于以密钥字母 K 加密的博福特子流,密文字母 C 对应明文字母 P = (K - C) mod 26。子流中出现频率最高的密文字母很可能对应英文中最常见的字母 E。如果频率最高的密文字母是 C_max,则 K = (C_max + 4) mod 26(因为 E = 4)。测试几个 K 的候选值并判断解密文本是否像英文,很快就能确定正确的密钥字母。
与维吉尼亚密码分析的比较
博福特密码的密码分析流程与维吉尼亚密码几乎完全相同。密钥推导步骤略有差异,因为博福特公式涉及减法而非加法,但总体思路——通过 Kasiski 检测法或重合指数确定关键词长度,再逐一破解每个子流——完全一致。从安全性角度看,博福特密码相对于维吉尼亚密码并无优势。其自逆特性是操作上的便利,而非密码学意义上的强度提升。
博福特密码与波尔塔密码的关系
博福特密码和波尔塔密码都是自逆的多表替换密码,但它们实现自逆的机制截然不同。波尔塔密码使用 13 张表格,将字母表的前半部分与后半部分互换。博福特密码则利用模运算中减法的代数性质。波尔塔密码约束密文,使得前半字母表的明文总是产生后半字母表的密文(反之亦然),而博福特密码没有此类约束。
两种密码都体现了历史密码学家对简化操作的追求。波尔塔密码通过表格设计实现了这一目标;博福特密码则借助公式的数学性质达到同样效果。两种方法各有其合理之处,但最终都难逃相同的密码分析技术的破解。
实际应用与历史使用
海军通信
博福特密码在海军通信中找到了天然的应用场景,博福特的名字在这一领域本就颇具威望。自逆特性在海上尤为宝贵——密码本和密码表可能因进水而损坏、在战斗中丢失,或在恶劣天气下难以查阅。只需一套程序而非两套的密码,在恶劣条件下使用起来确实更为便捷。
野战密码
更广泛地说,自逆密码对于任何在压力下工作的军事或外交场合都颇具吸引力。博福特密码便于快速培训,只需极少的参考资料,且易于核验(将密文加密即可恢复明文)。这些特点使它成为战术通信的合理之选——在速度比绝对安全性更重要的场合。
密码尺
19 世纪至 20 世纪初,有时会专门为博福特密码制作称为"密码滑尺"或"密码尺"的实体密码装置。这些装置由两条字母条组成,可以相互滑动,以便快速查找密文值。自逆特性意味着单一的装置朝向既适用于加密,也适用于解密,而维吉尼亚密码的滑尺则需要对加解密使用不同的操作步骤。
常见问题
在博福特密码中,"自逆"是什么意思?
自逆密码是指加密过程与解密过程完全相同的密码。对于博福特密码,如果用密钥字母 K 和公式 C = (K - P) mod 26 对明文字母 P 进行加密,那么可以用完全相同的公式 P = (K - C) mod 26 对密文字母 C 进行解密。公式在两个方向上的结构相同——始终是以密钥减去"消息"。这意味着单一的操作程序、单一的表格、单一的说明即可覆盖加密和解密两种操作。
博福特密码与维吉尼亚密码有何不同?
维吉尼亚密码使用加法:加密为 C = (P + K) mod 26,解密为 P = (C - K) mod 26。博福特密码使用从密钥中减去的方式:加密和解密均为 C = (K - P) mod 26。关键的实践差异在于,维吉尼亚密码需要两套不同的操作(加密一套,解密一套),而博福特密码只需一套。然而在安全性方面,两种密码是等价的——它们拥有相同的密钥空间,同样容易受到 Kasiski 检测法和频率分析的攻击,有效强度相同。
博福特密码比维吉尼亚密码更安全吗?
不。博福特密码与维吉尼亚密码的安全性等同。两者都使用重复关键词从 26 种可能的替换字母表中选取,都容易受到 Kasiski 检测法和重合指数分析的攻击,在确定关键词长度后均可被频率分析破解。博福特密码的自逆特性对用户而言是一种便利,而非安全性优势。能够破解维吉尼亚密码的攻击者,只需对相同技术做极小的调整,就能破解博福特密码。
什么是"变体博福特"密码?
变体博福特密码使用公式 C = (P - K) mod 26——注意这是从明文中减去密钥,而非从密钥中减去明文。这在数学上等同于将维吉尼亚解密公式用作加密步骤。变体博福特不是自逆的:其解密公式为 P = (C + K) mod 26,即维吉尼亚加密公式。变体博福特密码有时与真正的博福特密码相混淆,但对相同的明文和密钥,两者会产生不同的密文。
弗朗西斯·博福特爵士是谁?
弗朗西斯·博福特爵士(1774–1857)是英国皇家海军中爱尔兰裔军官,于 1829 年至 1855 年担任英国皇家海军水文学家。他最为人知的成就是博福特风力等级,该标准化了风速分类,至今仍在国际上通用。博福特还主持安排了查尔斯·达尔文登上小猎犬号,并主导了海军部全球制图计划的大规模扩展。以他名字命名的博福特密码,似乎在 19 世纪中叶在英国海军和军事圈内流传。