🔄 维吉尼亚密码
多表替换 · 关键词加密 · 维吉尼亚方阵
多表替换 · 关键词加密 · 维吉尼亚方阵
维吉尼亚密码由法国密码学家Blaise de Vigenère于16世纪提出,用关键词让明文的每个字母使用不同的凯撒偏移,是多表替换密码的代表,很长一段时间被认为是"不可破译的密码"。
把关键词重复延伸到与明文等长,明文字母与关键词字母在维吉尼亚方阵里交叉得到密文。例如明文HELLO、密钥KEY:H用K行→U,E用E行→I,L用Y行→J,L用K行→V,O用E行→S,得到UIJVS。
关键词越长越安全,推荐用英文单词或短语(限A-Z)。避免"password""key"这类常见词。关键词越长,越难用频率分析破解。
凯撒所有字母用同一个固定偏移;维吉尼亚根据关键词每个位置用不同偏移,形成"多表"。正是多表打乱了单表替换的统计规律,让单纯的频率分析失效。
并非如此。它确实难用简单频率分析破解,但19世纪巴贝奇和卡西斯基分别发明了破解法:先找重复片段推断关键词长度(卡西斯基测试),再按长度分组做频率分析。所以它最终也被破解了。
关键词重复周期越短,越容易暴露。一旦攻击者推断出关键词长度,就能把密文按长度分组,每组退化成凯撒密码,用频率分析逐个击破。
是一张26×26的字母表,第r行第c列是字母(r+c) mod 26。加密时用明文字母定列、关键词字母定行,交点就是密文字母。本工具下方就展示了这张方阵。
经典维吉尼亚只针对英文字母。中文没有一对一字母表,需先转拼音或电报码再处理,本工具仅支持A-Z英文字母。
设关键词长度为m,第i个明文字母为P_i,对应关键词字母为K_i(取值0-25),则密文 C_i = (P_i + K_i) mod 26。
解密时 P_i = (C_i - K_i) mod 26。关键词重复使用,所以 K_i = K_{i mod m}。
| 位置 | 明文 | 密钥字母 | 密钥值 | 密文 |
|---|---|---|---|---|
| 1 | H(7) | K→10 | (7+10)%26=17 | R... 见方阵 |
| 2 | E(4) | E→4 | (4+4)%26=8 | I |
| 3 | L(11) | Y→24 | (11+24)%26=9 | J |
| 4 | L(11) | K→10 | (11+10)%26=21 | V |
| 5 | O(14) | E→4 | (14+4)%26=18 | S |
这正是维吉尼亚"号称不可破译"的底气所在,但代价是密钥管理和同步更复杂。
破解思路分两步,先找关键词长度,再逐组破解。
| 步骤 | 做法 | 解决什么 |
|---|---|---|
| 1 卡西斯基测试 | 找密文中重复的片段,取间距的最大公约数 | 推断关键词长度 |
| 2 分组 | 按长度把密文分成m组 | 每组成单表 |
| 3 频率分析 | 每组用凯撒方式破解 | 还原每个偏移 |
| 4 拼还原文 | 组合各组结果 | 得到完整明文 |
这个思路在19世纪被巴贝奇和卡西斯基几乎同时提出,宣告了维吉尼亚神话的终结。
今天的AES等现代密码,本质上仍在解决维吉尼亚没能解决的那些问题。
| 维度 | 凯撒 | 维吉尼亚 |
|---|---|---|
| 类型 | 单表替换 | 多表替换 |
| 偏移 | 固定一个 | 随关键词变化 |
| 密钥 | 一个数字 | 一个关键词 |
| 抗频率分析 | 弱 | 较强 |
| 破解难度 | 极低 | 较高(古典) |
| 关键词字母 | 偏移值 | 加密A→ | 解密A→ |
|---|---|---|---|
| A | 0 | A | A |
| B | 1 | B | Z |
| K | 10 | K | Q |
| Y | 24 | Y | C |
| Z | 25 | Z | B |
1. 输入文本(仅字母会被加密)。
2. 输入关键词(A-Z字母)。
3. 点击加密或解密。
4. 参考下方的维吉尼亚方阵了解加密原理。