维吉尼亚密码
定义
维吉尼亚密码是一类多表替换密码,属于古典密码体制的一种。它把 26 个英文字母依次错位排成 26 行,形成一张 26×26 的替换表,通常称为维吉尼亚方阵或表格法,每行对应一种移位量不同的凯撒密码[2][4]。加密时以关键词作为密钥,密钥字母被循环重复到与明文等长,每个明文字母按照对应位置的密钥字母选择一行替换表进行加密[4]。
与单表替换相比,同一明文字母在密文中的不同位置可以对应不同字母,因此单字母频率统计无法直接套用,这是它相对凯撒密码的主要改进[3][2]。
原理
维吉尼亚密码把英文字母映射为 0 至 25 的整数。设明文字母为 $P_i$、密钥字母为 $K_i$,密钥长度为 $n$ 并按周期循环使用,则加密与解密可写成 $C_i=(P_i+K_{i \bmod n}) \bmod 26$ 和 $P_i=(C_i-K_{i \bmod n}) \bmod 26$[5][6]。以关键词 LEMON 加密明文 ATTACKATDAWN 时,密钥重复为 LEMONLEMONLE,对应密文为 LXFOPVEFRNHR[5]。
在实际操作中,加密还可以查表完成:以密钥字母定位行、明文字母定位列,行列交点即为密文字母;解密则反向查表[7]。密钥长度决定移位模式的周期,长度越长、字母分布越随机,相同明文字母被加密成相同密文字母的机会越少[8]。
发展历程
多表替换的思想出现较早。莱昂·巴蒂斯塔·阿尔伯蒂在 15 世纪中叶提出用密码盘切换多套替换表,但可切换的方式十分有限;1508 年前后,约翰尼斯·特里特米乌斯在《隐写术》中给出表格法,即把 26 行错位字母并列成表,这一表格后来成为维吉尼亚密码的核心构件[4][9]。
以关键词控制表格选择的做法,最早见于意大利密码学家吉奥万·巴蒂斯塔·贝拉索1553 年出版的著作,他在特里特米乌斯表格法的基础上引入了密钥概念[4]。法国外交官布莱斯·德·维吉尼亚在 1586 年前后提出了使用自动密钥的方案,19 世纪时贝拉索的方法被误认为出自他手,密码由此得名“维吉尼亚密码”,这一误归名在密码史著作《破译者》中已被指出[3]。
由于破译困难,这一密码长期享有很高声誉:数学家查尔斯·道奇森 1868 年称其不可破译,1917 年《科学美国人》也称其无法翻译,其法文别称意为“不可破译的密码”[4]。查尔斯·巴贝奇在 1854 年已能破译该类密码但未公开方法,弗里德里希·卡西斯基则在 1863 年首次公开发表通用破译方法,即卡西斯基试验[9]。
应用
维吉尼亚密码操作简单,配合密码盘可以作为战地密码使用。美国南北战争期间,南方军队使用黄铜密码盘生成维吉尼亚密文,北方则经常能够破译这些电文[4]。在 1914 年至 1940 年间,瑞士军队也使用过基于该方法的加密计算尺[7]。
在此基础上出现了多种变体,例如只使用有限几组移位的格兰斯菲尔德密码、把密文写成“密钥减明文”的博福特密码,以及密钥流由明文自身延续的自动密钥密码[2]。吉尔伯特·维尔南在 1918 年提出维尔南—维吉尼亚方案试图改进已可破译的密码,其思路后来导向一次性密码本。现代这一密码主要用作密码学教学中说明多表替换与频率分析局限的典型例子[4]。
局限
维吉尼亚密码的根本弱点在于密钥的循环重复。一旦分析者推断出密钥长度 $n$,密文就可以拆成 $n$ 组相互交织的凯撒密码,每组单独作频率分析即可破解[9]。卡西斯基试验利用密文中重复字母组之间的距离来推测密钥长度,弗里德曼试验则用重合指数估计周期,两者都不需要预先知道明文[10]。
密钥过短或密文相对密钥足够长时,破译难度会显著下降;反之,只有当密钥与明文等长、随机且不重复使用时,这一结构才等价于一次性密码本,而这样的用法在手工条件下难以实现[10]。此外,若关键词取自常用单词或句子,明文与密钥的字母频率分布一致,统计特征仍会残留,可被进一步利用[8]。因此该密码不适用于需要实际保密的场合,其价值主要在于历史与教学层面[2]。
参见
参考资料
- Vigenere密码 [引用日期2026-10-29]
- 维吉尼亚多表替换加密术 [引用日期2026-10-29]
- [科普中国]-维吉尼亚密码 - 版权归原作者所有,如有侵权,请联系我们 [引用日期2026-10-29]
- 图文详情——科普中国资源服务 - [科普中国]-维吉尼亚密码 [引用日期2026-10-29]
- Vigenérecipher [引用日期2026-10-29]
- 维吉尼亚密码详解 [引用日期2026-10-29]
- 看得见的安全技术 盘点加解密进阶史 [引用日期2026-10-29]
- 全屏显示 专题 章节 [引用日期2026-10-29]
- cryptography-polyalphabetic-cipher-vigenere [引用日期2026-10-29]
- Thám mật mã Vigenère [引用日期2026-10-29]