维吉尼亚密码
维吉尼亚密码(Vigenère cipher)是一种多表替换密码,16 世纪由贝拉索提出,后被误记在法国外交官维吉尼亚名下。它可以看作多个凯撒密码的叠加:先选一个关键词,把它反复拼接到与明文等长,再让每个明文字母按对应位置关键词字母的序号做位移。若记 A=0、B=1……Z=25,加密就是 C = (P + K) mod 26,解密则是 P = (C - K + 26) mod 26。
它属于可逆的加密算法,而非单向哈希——只要有关键词就能还原明文,这点要和真正的哈希(不可逆)区分开。相比凯撒密码只用一个固定偏移,维吉尼亚让同一个字母在不同位置对应不同密文,掩盖了单字母的出现频率,历史上一度被称为"无法破译的密码"。如今在线工具里,它主要用于教学演示、CTF 解题和简单的字符混淆。
使用要点与常见误区:
- 它并不安全:Kasiski 检测和 Friedman 重合指数法能先推断出关键词长度,再逐段破解,切勿用于保护真实数据。
- 只有当关键词真随机、与明文等长且仅使用一次时(即"一次性密码本")才理论安全;普通短关键词会因循环重复而暴露规律。
- 通常只处理英文字母,大小写、数字、空格和标点一般原样保留、不参与位移,不同工具的处理细节可能略有差异。
常见问题
维吉尼亚密码是加密还是哈希?
它是可逆的加密算法,用关键词加密,也能用同一个关键词解密、还原出明文。哈希是单向不可逆的,两者本质不同,虽然常被归在同一分类里。
维吉尼亚密码安全吗,能用在生产环境吗?
不安全。早在 19 世纪就被 Kasiski 法破解,只要推断出关键词长度就能逐段还原。它只适合教学、CTF 和趣味场景,不要用于保护真实敏感数据。
它和凯撒密码、一次性密码本是什么关系?
凯撒密码是固定的单一偏移,维吉尼亚用关键词提供一组循环偏移,相当于多个凯撒密码叠加。当关键词真随机、与明文等长且只用一次时,它就变成理论上不可破译的一次性密码本。