最古老的坐标密码,把字母变成数字——至今仍在启发编码设计者
想象你是波利比奥斯,一位古希腊历史学家和战略家。你需要在相距很远的部队之间传递信号——用火炬或旗帜。怎样用简单而可靠的信号来编码字母表中的每个字母?
波利比奥斯想出了一个绝妙的办法:一张方形表格,每个字母都对应一对数字——行号和列号。只要发送两个数字,接收方就能还原出字母。历史上最早的密码之一就这样诞生了——如今它仍被用于教学和娱乐。
与凯撒密码(简单的代换)不同,波利比奥斯方阵把字母变成数对。这不仅隐藏了含义,而且便于用任何方式传输:烟、光、声音。如果打乱表中字母的顺序,密码的强度还会大大提高。
这种密码的基础是一张填满字母表字母的方形表格。俄文通常使用 6×6 的表格(33 个字母 + Ё);英文使用 5×5 的表格(字母 I 和 J 合并)。行和列从 1 开始编号。汉字有几千个,放不进这样的小方阵,所以游戏里请用俄文或英文字母。
把字母表的字母逐行写入。例如俄文版(6×6):
下面的例子使用俄文字母表——游戏本身也可以选择英文版。
每个字母都被替换成一对数字:行号和列号。例如,字母“С”位于第 4 行第 1 列 → 密文“41”。
接收方知道同一张表,把密文拆成一对对数字。对每一对,找到行和列,读出交叉处的字母。原始消息就这样被恢复出来。
例如:“35”→ 第 3 行第 5 列 → 字母“П”。
通过打乱表中的字母可以提高密码的强度。如果攻击者不知道字母的排列,即使拿到密文也无法恢复消息。这就多了一个密钥——方阵的填写顺序。
М(俄文字母表)C = (row, col),其中 row、col 是字母在表中的坐标。54P = table[row][col],由坐标反推出字母。在交互式模拟中,你实际上会做什么?
在游戏中,你不只是阅读关于波利比奥斯方阵的内容——而是亲身经历整个加密和解密过程。表格的可视化动画会帮助你牢牢记住这种古老而巧妙的方法。
古希腊历史学家波利比奥斯(约公元前 200–118 年)在他的著作《历史》中描述了这种方法。他用这个方阵通过火炬传递信号:一张希腊字母的 5×5 表格,火炬的数量表示行和列。这样就能把任何字母传送到几公里之外。
波利比奥斯方阵是许多更复杂密码的基础。例如,第一次世界大战中使用的 ADFGVX 密码就基于一张以字母 A、D、F、G、V、X 标注的 6×6 表格。这种方法还用于密码谜题、二维码(作为一种数据编码方式),甚至用来教孩子加密的基础知识。
一战时期德军的战地密码,先用波利比奥斯方阵,再进行换位。
坐标原理如何出现在现代数字通信中:从 GPS 到二维码。
打乱字母、用关键词填写方阵——加强密码的方法。
如果知道坐标对的频率,如何破解这种密码,以及如何避免被破解。
密码的演变:从简单的代换到非对称密码学。
现在你已经理解了坐标加密的原理,正是亲手试一试的好时机!
在交互式模拟中,你可以加密自己的消息,同时实时观看表格的动画。