跳到主要内容

博福特密码(Beaufort cipher)详解:一个减号怎样让加密和解密合二为一

蒲福密码是维吉尼亚的减法变体,公式 C =(关键词字母 − 明文字母)mod 26。本文讲清它的自反性、和维吉尼亚的差别,以及在 CTF 和密码学历史里的位置。

发布于 作者 李雷
#古典密码 #博福特密码 #CTF #密码学

博福特密码:一个减号怎样让加密和解密合二为一

博福特密码(Beaufort cipher)长得很像维吉尼亚,都靠一个循环关键词、都是多表代换。可它只把一个加号换成了减号,整套行为就变了。最直接的结果是:加密和解密变成同一个动作,你不再需要分清自己现在是在编码还是在解码。

公式只有一行

博福特对每个拉丁字母做这件事:

C =(K − P)mod 26

P 是明文字母的位置(A=0、B=1……Z=25),K 是关键词当前字母的位置,C 是输出字母的位置。注意这里是关键词减明文,而不是相加。维吉尼亚是 C =(P + K)mod 26,博福特把它反过来,变成 K 减 P。差别就这一个减号,可它带来的性质完全不同。

举个最小的例子:关键词 LEMON 里的 L 在第 11 位,明文 A 在第 0 位,那么(11 − 0)mod 26 = 11,对应字母 L。所以 A 在 L 这个键下加密成 L。

自反:加密就是解密

博福特最值得记住的一点是它自反,也就是自己是自己的逆。原因藏在公式里:C =(K − P)mod 26 和 P =(K − C)mod 26 其实是同一条规则,把 P 和 C 互换,等式照样成立。于是你拿密文当输入、用同一个关键词再跑一遍,出来的就是明文。

这意味着工具上只需要一个按钮。你不用先选「加密」还是「解密」,粘进去、填关键词、看结果,就这么简单。对解谜和教学来说,这是个很顺手的特性,而维吉尼亚做不到,它加密和解密要走相反方向。

一个完整的输入输出例子

用经典向量来看一遍。关键词 LEMON,明文 ATTACKATDAWN:

  • 加密:ATTACKATDAWN → LLTOLBETLNPR
  • 解密:把 LLTOLBETLNPR 再用 LEMON 跑一遍 → ATTACKATDAWN

同一个关键词、同一个操作,正反都成立。如果你把同样这组输入丢进维吉尼亚,会得到 LXFOPVEFRNHR,和博福特的 LLTOLBETLNPR 完全不同。把这两串并排放着看,加法密钥和减法密钥的区别一眼就出来了。你可以在 博福特密码加解密工具 里直接验证这个往返,再到 维吉尼亚密码工具 跑同一组输入做对照。

和维吉尼亚到底差在哪

我自己第一次做古典密码题时,栽过一个很典型的坑:拿到一段密文和一个关键词,套维吉尼亚解出来全是乱码,差点以为关键词错了。换成博福特再试,英文立刻冒出来。从那以后我养成一个习惯,先确认题目用的是加法还是减法。

把两者并排列清楚:

  • 维吉尼亚:C =(P + K)mod 26,加密解密反方向,不自反。
  • 博福特:C =(K − P)mod 26,加密解密同一遍,自反。

还有个容易混的东西叫变体博福特(有时叫德式博福特),用的是 P − K,方向和经典博福特正相反,而且不自反。所以遇到「输出像被整体平移了固定量」的情况,多半是减法顺序选错了。做题前先确认题目要哪一种,比反复怀疑关键词高效得多。

它从哪来,又适合放在哪

这套密码以英国海军军官弗朗西斯·蒲福(Francis Beaufort)命名,他也是那个蒲福风级的提出者。它是十九世纪古典密码谱系里的一员,和维吉尼亚、仿射、栅栏一类同属手算时代的代换与置换方法。今天它早已不用于真实保密,但在两个地方很活跃:一是密码学课堂,自反性是讲「逆运算」的绝佳例子;二是 CTF 和解谜,凡是出现循环关键词、密文长度规整的题,博福特和维吉尼亚常常要一起试。

要提醒一句:它不安全。和所有古典多表代换一样,密文一多,Kasiski 测试和重合指数分析就能把它拆开,短关键词更是很快就破。把它当教学工具、解谜机制或 CTF 的一步就好,真要保护机密,请用 AES-GCM 这类现代认证加密。想顺手把蒲福放进解谜链路里反复跑,直接在 博福特密码加解密工具 里加关键词、看对照视图就行,数字、空格、标点和中文都会原样穿过,不会打乱对齐。


Made by Toolora · Updated 2026-06-13