跳转到正文

培根密码

将消息转换为弗朗西斯·培根提出的五符号一组的 A 与 B,或将这些组还原为文本,可选培根原始的 24 字母表或现代的 26 字母表。然后按培根的本意将代码隐藏起来:藏进一段普通的句子里,每个字母以两种样式之一排版。

模式
字母表

只编码字母:培根字母表中没有空格、数字或标点的代码。

藏在眼皮底下

培根的真正构想:用两种样式书写任何无害的文字。封面文字的每个字母承载一个符号——普通样式代表 a,第二种样式代表 b。空格和标点不承载任何内容。

第二种样式

藏在封面文字中的消息

The roses in the garden have been lovely all week, despite the rain.

消息由封面文字的前 25 个字母承载;其余字母保持普通样式。

要读出它,请为每个普通字母写 a,为每个样式字母写 b,然后将每五个一组解码。大写在普通文本复制时会保留:将结果粘贴到解码中并选择字母大小写。

双符号字母表

  • A

    AAAAA

  • B

    AAAAB

  • C

    AAABA

  • D

    AAABB

  • E

    AABAA

  • F

    AABAB

  • G

    AABBA

  • H

    AABBB

  • I/J

    ABAAA

  • K

    ABAAB

  • L

    ABABA

  • M

    ABABB

  • N

    ABBAA

  • O

    ABBAB

  • P

    ABBBA

  • Q

    ABBBB

  • R

    BAAAA

  • S

    BAAAB

  • T

    BAABA

  • U/V

    BAABB

  • W

    BABAA

  • X

    BABAB

  • Y

    BABBA

  • Z

    BABBB

每个代码是该字母从零开始计数的位置,以二进制写出,a 代表 0,b 代表 1。消息中的字母会被高亮显示。

如何使用培根密码工具

  1. 1. 选择编码或解码。 编码将字母转换为五符号一组;解码则将这些组还原为字母。
  2. 2. 选择字母表。 培根原本的字母表有 24 个字母——I 与 J 共用一个代码,U 与 V 也如此。26 字母版本则让每个字母都有自己的代码。解码时请使用与生成该消息时相同的字母表。
  3. 3. 选择符号。 A 与 B 是传统选择,0 与 1 则展示了它所代表的二进制代码,自定义符号允许您使用任意两个字符。解码时,除两个符号之外的内容都会被忽略,因此空格和换行无关紧要。
  4. 4. 隐藏它。 在结果下方输入一段封面文字并选择第二种样式。封面文字的每个字母承载一个符号,预览会显示您的消息如何隐藏在其中。

培根双符号密码如何工作

培根称之为双符号(biliteral)密码:每个字母都只用两个符号书写,每组五个。五个位置、每个位置两种选择,即 2 × 2 × 2 × 2 × 2 = 32 种组合。用现代的说法,每组是该字母从零开始计数的位置,以二进制写出,a 代表 0,b 代表 1——A 为 aaaaa(0),B 为 aaaab(1),C 为 aaaba(2)——尽管培根只是以一张表格的形式简单列出。

培根的 24 字母表
A 至 HI/J 至 QR 至 Z
A aaaaaI/J abaaaR baaaa
B aaaabK abaabS baaab
C aaabaL ababaT baaba
D aaabbM ababbU/V baabb
E aabaaN abbaaW babaa
F aababO abbabX babab
G aabbaP abbbaY babba
H aabbbQ abbbbZ babbb

26 字母表在 A 到 I 之间与培根的一致,从 J 开始不同,因为每个字母都需要自己的代码。这一选择很重要:培根字母表中的 JIVE 为 ABAAA ABAAA BAABB AABAA,解码为 IIUE;而 26 字母表则将字母区分开来,写作 ABAAB ABAAA BABAB AABAA。

示例

在培根字母表中,Bacon 编码为 AAAAB AAAAA AAABA ABBAB ABBAA——即 B、A、C、O、N。将其隐藏在工具的示例封面文字中,并以大写作为第二种样式,则显示为 the rOses in the GarDEn HaVE been lovely all week, despite the rain.。将前 25 个字母按大小写排序——小写代表 a,大写代表 b——五组便会重现。若以粗体或斜体作为第二种样式,同样的七个字母则只是分别设为粗体或斜体。

将消息隐藏于众目睽睽之下

一组 a 与 b 从来不是为了以其原样传递而设计的。培根的要点在于,任何具有两个取值的差异都可以承载它们——正如他所建议的两种略有不同的字体,或正体与斜体、直立与倾斜、大写与小写。写入一封普通信件中的消息,除非读者知道要把字母分成两类,否则是不可见的。这使双符号密码成为早期隐写术的一个范例:隐藏的不仅是消息的内容,还有消息本身的存在。

培根在《学术的进展》(De Augmentis Scientiarum,1623)中发表了这一方法,并写道他年轻时在巴黎构思了它。将近三个世纪之后,它成为一场文学争论的核心。自 1899 年起,伊丽莎白·威尔斯·盖勒普声称在莎士比亚第一对开本字体的变化中发现了培根留下的双符号消息。威廉·弗里德曼和伊丽莎白·弗里德曼后来在伊利诺伊州的河岸实验室参与了她的项目,他们的密码学生涯正是从那里开始的。他们在《莎士比亚密码的检验》(The Shakespearean Ciphers Examined,1957)中审视了这类主张,结论是没有一项站得住脚。

破解培根密码

一旦两类字母被区分开,就再没有什么可以破解的了:字母表是固定且公开的,因此各组可以直接读出。唯一的秘密是藏匿之处,而它很脆弱。承载信息的字符必须可区分且保持一致,这正是为什么对不规则的十七世纪字体的读法总是令人难以信服。而且,即使代码被打乱,每一组仍然对应一个字母,因此频率分析就能完成破解。

常见问题

什么是培根密码?
一种由弗朗西斯·培根设计的方法,每个字母都变为由仅两种符号组成的五符号一组——A 是 aaaaa,B 是 aaaab,依此类推。由于只需两种符号,这种代码可以隐藏在任何使用两种字母样式的文本中。
如何解码培根密码?
将消息转换为由 a 和 b 组成的字符串,按五个一组切分,再逐组查表;或者将 a/b 文本粘贴到解码模式中,由工具完成。请先选对字母表:在培根原始的 24 字母表中,I 与 J 共用一个代码,U 与 V 也如此。
24 字母与 26 字母的培根密码有何区别?
培根的字母表沿用了他那个时代的拉丁用法,I 与 J 用一个代码,U 与 V 用另一个代码,因此只有 24 个代码。26 字母版本则让 J 与 V 各有自己的代码。两者在 A 到 I 之间一致,因此用错误的字母表解码时,I 之后的大多数字母都会变成相邻的字母,而 Y 和 Z 会变成问号。
能用 0 和 1 代替 A 和 B 吗?
可以。这种代码本质上就是二进制:每组是该字母从零开始计数的位置,以五位二进制数写出,a = 0,b = 1,因此 C 为 00010,即数字 2。在符号选项下选择 0 与 1,或任意两个字符。
培根密码如何把消息隐藏在文本中?
普通封面文字的每个字母代表一个符号——普通字母代表 a,第二种样式的字母代表 b。五个封面字母承载消息中的一个字母,因此封面文字所需的字母数是消息的五倍。培根建议使用两种略有不同的字体;本工具则用粗体、斜体或大写来演示这一构想。
培根是否把消息藏在莎士比亚的剧本里?
没有可靠的证据表明他这样做过。最著名的、关于第一对开本中藏有双符号消息的说法,由伊丽莎白·威尔斯·盖勒普提出,它依赖于用肉眼把不规则的印刷字母分成两类。威廉·弗里德曼和伊丽莎白·弗里德曼于 1957 年审查了这些说法,没有发现一项能够成立。

相关工具

编码与密码中的更多工具