RU EN ES 中文

维吉尼亚密码

一种三个世纪里被认为“不可破译”的多表代换密码——它改变了密码学的进程

我们为什么需要它?

想象你是爱丽丝,一位文艺复兴时期的外交官。你需要给鲍勃送去一条秘密消息,但邮路并不安全——信件会被截获、拆开、抄录。

简单的代换密码(A→X、B→C 等)很容易用频率分析破解:在任何一种语言中,某些字母出现得比其他字母频繁得多——所以密文中最常见的符号,很可能就是字母表中最常见的字母。

维吉尼亚密码解决了这个问题。它不只用一个字母表,而是使用多个字母表,并按照关键词在它们之间切换。同一个明文字母会因位置不同而被加密成不同的字母——于是频率分析失效了。

这种方法被认为如此可靠,以至于人们称它为“le chiffre indéchiffrable”——“不可破译的密码”。直到 1863 年,弗里德里希·卡西斯基才发表了破解它的方法。

它是如何工作的?

这种密码的核心是维吉尼亚表:一个 33×33 的方阵(俄文字母表),每一行都是比上一行多移一位的字母表。表格是按字母表构造的,所以汉字无法这样加密——游戏中的消息和关键词都请用俄文或英文字母。

1

准备表格

第一行是原始的字母表。之后的每一行都向左移动一位。第 K 行从字母表的第 K 个字母开始。

以英文为例(前 3 行):

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXYZA
CDEFGHIJKLMNOPQRSTUVWXYZAB
2

选择密钥

爱丽丝和鲍勃商定一个关键词,例如 KEY。这个词在消息下方循环重复:

消息: П Р И В Е Т М И Р У !
密钥: К Л Ю Ч К Л Ю Ч К Л
3

加密

对消息中的每个字母:

  • 用密钥字母找到行
  • 用消息字母找到列
  • 交叉处就是加密后的字母

公式:C = (P + K) mod N

其中 P 是明文位置,K 是密钥位置,N 是字母表的大小,C 是密文。

4

解密

鲍勃使用同一张表,但反向操作:

  • 行 = 密钥字母
  • 在这一行中找到密文符号
  • 它所在的列就是原始字母

公式:P = (C − K + N) mod N

维吉尼亚密码背后的数学
🔐 加密
C = (P + K) mod N
例如:
用密钥 К 加密 П
П = 第 16 个字母(从 0 开始计数),К = 第 11 个
(16 + 11) mod 33 = 27 → Ъ
🔓 解密
P = (C − K + N) mod N
例如:
用密钥 К 解密 Ъ
Ъ = 27,К = 11,N = 33
(27 − 11 + 33) mod 33 = 16 → П
为什么这样可行?
每个明文字母都会因密钥位置的不同而被加密成不同的字母。能破解简单代换密码的频率分析变得毫无用处——字母“O”可能变成“A”“M”“Щ”等等。
密钥长度 > 5 → 抵抗力强
* 在游戏中,表格是可视化的:每一步都会点亮行和列,你可以实时观看整个过程。
关键结论: 维吉尼亚密码的力量在于密钥的重复。密钥越长、越随机,就越难破解。但正是这种循环性成了它的弱点:卡西斯基方法利用密文中的重复找出密钥长度,然后对每一个“子串”分别进行频率分析。

现在来看真正的魔法

在模拟中,你实际上会做什么?

在游戏中,你不只是阅读关于维吉尼亚密码的内容——而是亲身经历整个流程:从输入消息到传输成功。你会看到抽象的公式变成生动的动画,并理解为什么这种密码在当时是一次突破。

给好奇的人

历史背景

这种密码最早由吉奥万·巴蒂斯塔·贝拉索(Giovan Battista Bellaso)于 1553 年描述,却被误归于 1586 年描述过它的布莱斯·德·维吉尼亚(Blaise de Vigenère)。这个名字就这样沿用下来,至今我们仍称它为“维吉尼亚密码”。

它为什么被破解了?

1863 年,普鲁士军官弗里德里希·卡西斯基(Friedrich Kasiski)发表了一种利用密文中重复片段的方法。如果同一个明文短语被密钥的同一片段加密,密文中就会出现相同的序列。这种重复之间的距离往往是密钥长度的倍数。

一旦知道了密钥长度,密码分析者就把密文分成若干组(所有用第一个密钥符号加密的字母、用第二个的,依此类推),并对每一组分别进行频率分析。

进一步学习的主题

如果你想更深入地了解密码学,这里有一些关键主题:

频率分析

语言统计如何帮助破解密码:字母、双字母组合和三字母组合的频率

卡西斯基方法

根据密文中的重复找出密钥长度的算法

重合指数

弗里德曼用来确定密钥长度的统计检验

一次性密码本

唯一在理论上不可破译的密码:密钥长度 = 消息长度,且只使用一次

现代分组密码

多表代换密码背后的思想如何演变成 AES、ChaCha20 和其他算法

用 Python 进行密码分析

用于频率分析和攻击维吉尼亚密码的实用脚本

如今的实际用途

虽然维吉尼亚密码已不再用于保护真实数据,但它仍然是:

  • 多表代换加密的优秀教学示例
  • 理解更复杂算法的基础
  • CTF 竞赛和密码谜题中的常客
  • 连接古典密码学与现代密码学的历史桥梁

现在你已经了解了基础知识,正是动手实践、看看这个密码如何运作的好时机!

在交互式模拟中,你可以加密自己的消息,并观察过程中的每一步。