首页/我的作品/密码学/3.4 维吉尼亚密码:让同一个字母有不同替身
密码学:守护数字世界的秘密

3.4 维吉尼亚密码:让同一个字母有不同替身

第 19 / 78 篇 · Crazy Boy

频率分析的发现,让单表替换密码瞬间从“牢不可破”沦为“不堪一击”。密码学家们开始思考:有没有一种方法,能让同一个明文字母在不同的位置变成不同的密文字母,从而抹平频率分布?

答案是肯定的。16世纪,一位名叫布莱斯·德·维吉尼亚(Blaise de Vigenère)的法国外交官,在前人基础上完善了一种全新的密码——后来被称为维吉尼亚密码。它巧妙地引入了“密钥”和“多表替换”的概念,一度被称为“不可破译的密码”,并在之后的三个世纪里让无数密码分析师束手无策。

从单表到多表

单表替换的弱点在于“固定”——一个字母永远变成同一个密文字母。维吉尼亚密码的核心思想就是打破这种固定性:使用多个不同的替换表,并且轮流使用它们。

你可以把它想象成一个密码轮盘。凯撒密码只有一个固定的移位,而维吉尼亚密码的移位量是随着位置变化的。这个变化由一组密钥来控制——就像给每个明文字母配上不同的凯撒密码。

维吉尼亚方阵

维吉尼亚密码使用一张 26×26 的表格,称为维吉尼亚方阵(Vigenère square)。表格的第一行是正常的字母表,第二行是向左移一位的字母表,第三行向左移两位……以此类推。或者更直观地,每一行就是不同移位的凯撒密码。

(这里可以配一张简化图,例如列出前几行)

实际上,我们不需要真的画表格,用数学就能描述:如果明文是 P,密钥字母是 K(用数字0-25表示),那么密文 C = (P + K) mod 26。解密时,P = (C - K) mod 26。

这看起来和凯撒密码很像,但关键在于:每个位置的 K 可以不同。

密钥循环

维吉尼亚密码需要一个关键词。比如,我们选择关键词“KEY”。将关键词重复写在明文上方,每个明文字母对应一个密钥字母。

假设明文是“HELLO”,关键词是“KEY”。我们把它写成:

明文:  H  E  L  L  O
密钥: K E Y K E

现在,用每个密钥字母对应的移位量去加密对应的明文字母:

  • H(7) + K(10) = 17 → R
  • E(4) + E(4) = 8 → I
  • L(11)+ Y(24)= 35 mod 26 = 9 → J
  • L(11)+ K(10)= 21 → V
  • O(14)+ E(4)= 18 → S

得到密文:RIJVS

你看,同样的字母 L(明文第3和第4位)因为对应的密钥不同(Y和K),被加密成了 J 和 V 两个不同的密文字母。同样,如果明文中有两个 E,只要它们对应不同的密钥字母,就会变成不同的密文。

这就是维吉尼亚密码的魔力——同一个明文字母在不同位置可以有无数种“替身”。

为什么能对抗频率分析?

在单表替换中,明文的频率特征被完整地转移到密文。而在维吉尼亚密码中,如果密钥足够长,同一个明文字母会被分散到多个不同的密文字母中,使得密文的字母频率趋向均匀,不再呈现语言的统计特征。

例如,英文中E的出现频率是12.7%,但在维吉尼亚加密后,E可能变成A、B、C……各种字母,每个出现的次数都差不多。这样一来,频率分析就失效了——你无法再通过统计哪个字母出现最多来猜测它是E。

不可破译的神话

在16世纪,这种密码被欧洲各国广泛使用,被认为是“绝对安全”的。甚至有说法称,维吉尼亚密码是“不可破译的”。这个神话持续了将近300年。

直到19世纪中期,一位普鲁士军官弗里德里希·卡西斯基(Friedrich Kasiski)发表了一篇论文,揭示了维吉尼亚密码的致命弱点。他的方法后来被称为卡西斯基测试(Kasiski examination)。

卡西斯基发现,如果关键词重复使用,那么当明文中有重复的模式,且恰好落在相同的密钥位置时,密文中就会出现重复的模式。通过分析这些重复模式之间的距离,可以推测出密钥的长度。一旦知道了密钥长度,就可以把密文按密钥长度分组,每组其实就变成了一个独立的单表替换密码——频率分析又可以派上用场了!

后来,美国密码学家威廉·弗里德曼(William Friedman)又提出了重合指数(Index of Coincidence)的方法,可以更精确地判断密钥长度。

尽管如此,维吉尼亚密码仍然是密码学史上的一座里程碑。它首次将“密钥”的概念系统化,并开创了“多表替换”这一全新的密码设计思路。直到今天,许多现代密码中仍能看到它的影子——比如,流密码本质上就是用一个伪随机密钥流对每个字符进行加密,这和维吉尼亚的思想一脉相承。

小结

维吉尼亚密码通过引入关键词和多表替换,成功抵御了频率分析,统治了欧洲密码学界近三个世纪。它让我们看到:密码设计的关键,在于如何打乱信息的统计规律。虽然它最终被攻破,但它为后来更强大的密码系统铺平了道路。


你知道吗? 维吉尼亚密码其实并不是维吉尼亚本人发明的。他只是在1585年出版的一本书中整理和推广了这种密码,而最早的发明者可能是另一位意大利人乔瓦尼·巴蒂斯塔·贝拉索(Giovanni Battista Bellaso)。但历史还是把荣誉给了维吉尼亚。