波尔塔密码 — 实验台工具
发布 2026 年 10 月 8 日 ·
乔万·巴蒂斯塔·德拉·波尔塔在 1563 年公布了这张表盘,解决了一个困扰密码学家一个世纪的问题:他造出了一套自逆的多表密码。加密与解密使用同一套流程、同一把密钥,因此野战文书不可能把方向搞反。
- 时代
- 文艺复兴
- 类型
- 多表
- 密钥空间
- 26^k, 13 rows
- 难度
- 野战
I这把工具做什么
这张表盘有十三行,每行由一对字母作密钥:第一行用 A 或 B,第二行用 C 或 D,依次到第十三行用 Y 或 Z。这把密钥字母表缩小了一半,同时让每一行都成为对合映射。
每行的工作方式是把字母表劈成两半。A-M 是前半,N-Z 是后半。在第一行里 A 映射到 N、B 映射到 O;N 映射回 A、O 映射回 B。把该行套用两次就回到原字母,这正是使密码自逆的性质。
| 密钥对 | A 映射到 | N 映射到 | A 再 N 的结果 |
|---|---|---|---|
| AB(第 1 行) | N | A | 回到原文 |
| CD(第 2 行) | O | M | 回到原文 |
| EF(第 3 行) | P | L | 回到原文 |
以密钥 PORTA 加密明文 LOOM 的实例:
| 位置 | 明文 | 密钥 | 行 | 密文 |
|---|---|---|---|---|
| 1 | L | P | 8 | A |
| 2 | O | O | 8 | Y |
| 3 | O | R | 9 | C |
| 4 | M | T | 10 | D |
注意前两个字母用了同一行,因为 P 与 O 都落在第八行的密钥字母对范围内;后两个字母换行。机制就在这里:长度为 k 的密钥给出 13^k 种不同的行序列,而不是 26^k,但换来的是自逆性。
II密钥
对长度为 k 的密钥,行序列空间是 13^k。六字母密钥给出约 480 万种行序列——比维吉尼亚的 26^6 小 64 倍,这就是自逆性付出的代价。
这是一次实际的缩减,但就其时代而言并不致命。波尔塔真正的弱点与维吉尼亚相同:密钥会重复,而重复的密钥可以用卡西斯基检验测量。
自逆性是一项运行特性,不是安全特性。让密码更容易使用并不会让它更难被破,只是意味着使用者会犯更少的错误。
平心而论,少犯错是有价值的。一个密钥空间为 13^6、但被正确使用的密码,对军队来说比一个密钥空间为 26^6、却被错误使用的密码更有用——波尔塔显然是有意做出这个判断的。
III弱点提示
历史密码用于教学与娱乐,不适合保护真实信息。完整分析见对应条目。