博福特密码

博福特密码指南:自逆加密及其与维吉尼亚密码的区别

深入掌握博福特密码的自逆特性。学习公式 B(p,k) = (k - p) mod 26、逐步示例,以及它与维吉尼亚密码的比较。

发布于 2026年3月19日
15 分钟阅读
密码学指南

简介

博福特密码是历史上颇值得深入研究的密码之一。表面上看,它不过是维吉尼亚密码的一个小变体——事实上,两者确实密切相关。但博福特密码拥有一项维吉尼亚密码所不具备的特性:自逆性。加密与解密是同一种操作。正是这一区别使博福特密码在实际应用中颇具吸引力,尤其是在军事和海军场景中,因为在高压状态下,操作的简便性至关重要。

该密码以弗朗西斯·博福特爵士命名。他是爱尔兰裔英国皇家海军水文学家,以博福特风力等级而闻名于世。博福特密码使用公式 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 表格)来执行,但查表步骤有所不同:

  1. 在 Tabula Recta 表的顶行找到明文字母
  2. 沿该列向下找到密钥字母
  3. 读取左侧的行标签,即为密文字母。

这本质上是维吉尼亚密码查表步骤的逆操作——维吉尼亚密码先找到密钥所在行,再沿行读取;而博福特密码先定位明文所在列,再在列中查找密钥。


完整加密示例

以关键词"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 值
1SW1822
2AI08
3IN813
4LD113
5SF185
6AR017
7IO814
8LM1112
9SN1813
10AO014
11IR817
12LT1119
13SH187
14AW022

第三步:应用公式 C = (K - P) mod 26。

位置(K - P)mod 26密文字母
118-22 = -422W
20-8 = -818S
38-13 = -521V
411-3 = 88I
518-5 = 1313N
60-17 = -179J
78-14 = -620U
811-12 = -125Z
918-13 = 55F
100-14 = -1412M
118-17 = -917R
1211-19 = -818S
1318-7 = 1111L
140-22 = -224E

结果:

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 + KK - PP - K
解密公式C - KK - CC + K
自逆性
等价关系--维吉尼亚加密后反转字母表维吉尼亚解密

三者之间的关系

三种密码之间存在优雅的数学关联。博福特密码可以表示为两个简单操作的复合:

  1. 施加维吉尼亚加密:V = (P + K) mod 26
  2. 施加 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 世纪中叶在英国海军和军事圈内流传。

关于本文

本文是我们综合 博福特密码 教程系列的一部分。继续了解古典密码学,并探索我们的交互式密码工具。

试用 博福特密码 工具

通过我们的交互式博福特密码工具,将所学知识付诸实践。

试用 博福特密码 工具