跳到正文
Cipherloom密码织机

CIPHER/SUBSTITUTION/POLYBIUS SQUARE

波利比奥斯方阵

发布 2026 年 9 月 20 日 · · 6 分钟阅读

波利比奥斯发明的不是密码,而是一套记号法:把任何字母写成两个 1 到 5 之间的数字。这套记号法后来成了密码学史上被复用最多的想法,本合集中每一个把字母转成数字的密码,都站在它上面。

时代
古典时代
类型
替换
密钥空间
25! (any grid arrangement)
难度
入门
密文栅格图版:波利比奥斯方阵
图版 polybius-square · 替换

I现象

把字母表填进 5 × 5 方格,把 I 与 J 并入一格,因为 26 个字母放不进 25 格:

12345
1ABCDE
2FGHIK
3LMNOP
4QRSTU
5VWXYZ

于是 LOOM 变成 31 34 34 32。一条消息变成一串数字后,可以夜里用火把闪送、写在墙上、敲出来,或者藏进一个更长的数字里。

代价立刻显现:输出有极强的特征。只出现奇数位,而且永远是成对出现。任何看到一长串 1 到 5 的数字的人,都知道自己面对的是什么。

明文数字说明
L31第 3 行第 1 列
O34第 3 行第 4 列
M32第 3 行第 2 列

注意数字形式买到了什么:符号集的大小从 26 降到 5。五种可区分的信号是比二十六种容易得多的工程问题,而这正是这套记号法存在的全部理由。

II密钥空间

如果 25 个符号在格子里可以任意摆放,则密钥空间是 25!——与普莱费尔出现的同一个天文数字,也带着同一个附加条件:真实使用者会用关键词构造方格,这把空间压缩到最多几千种排列。

但更有用的思考方式是:方格不是重点。重点是“把一个字母表归约为一个小坐标系”,而坐标系可以叠加。

两位 5 值数字 = 25 个符号。三位 = 125 个。加上第六行就得到 36 个符号——后来 ADFGVX 正是用这种方式把十个数字和字母表装进同一张方格。

III加密步骤

  • 画一张 5 × 5 方格,把行与列都标上 1 到 5。
  • 把字母表填进去,I 与 J 合并。也可以先写关键词,再补未用到的字母。
  • 把明文写成大写并去掉空格。
  • 对每个字母,找出它的行号与列号。
  • 先写行号,再写列号。L 位于第 3 行第 1 列,因此写成 31。
  • 把所有配对连成一个连续的数字串,或按五个配对一组断开以便阅读。

IV解密步骤

  • 重建完全相同的方格——这是共享秘密,必须逐格一致。
  • 把数字串切成两两一对。若总位数为奇数,说明传输过程中有丢失。
  • 对每一对,第一位读作行,第二位读作列。
  • 读出交叉点上的字母。
  • 靠上下文解决 I/J 歧义。人名与技术术语是最容易出问题的地方。

V弱点

数字特征无法掩盖。 一串成对出现、取值在 1-5 的数字,在分析开始之前就暴露了密码类型。给每个数字加一、或改用关键词方格,可以遮掩内容,却遮不住结构。

它依然是单表替换。 每个字母恰好对应一个编码,因此字母频率完好保留。数完 25 种可能配对只需几分钟。

I/J 合并带来歧义。 接收方无法判断 24 是 I 还是 J,只能靠上下文解决。实践中大多数欧洲语言能吸收这种歧义;在姓名与地名的抄录里则会产生错误。

自我叠加的效果很差。 把已编码的消息再编一遍,会得到看起来像“另一张方格地址”的串——听起来像优点,实际上是通往混乱和密钥复用错误的快车道。

VI实战挑战

密文

32 35 35 33 34 15 52 15 43 44 45 35 41 44

提示: 未改动 A-Z 方格,I 与 J 合并。先行后列。

展开答案

明文

LOOM NEVER STOPS

本条目为历史与教育内容。相关描述不是绕开任何在用系统安全措施的指引,也不构成专业建议。

·史料

公元前二世纪的希腊历史学家、麦加洛波利斯的波利比奥斯在《历史》中把这张方格描述为一种信号系统。他提出用两组各五支火把、成对举起,让一个山头的发送者能把任意字母传给另一个山头的接收者。密码学的用法是后来才出现的;信号用途才是最初目的,也解释了那个塑造了后续一切的约束:五,是人在黑暗里还能用手表示的数字。

·继续读

波利比奥斯方阵是所有“分馏型”密码的祖先:把每个明文字母拆成片段,打乱片段,再拼回成不同的字母。本织机稍后的 Bifid 与 ADFGVX 正是如此。

分馏之所以有力,是因为它摧毁了明文字母与密文字母之间的一一对应,同时又不必放弃小符号集带来的便利。

下一台织机:tironian-notes——面对同一个问题的另一种古代答案,它靠缩写整词而非单个字母来缩小符号集。

+相关织线