跳到主要内容

维吉尼亚密码(Vigenère)入门:关键词加解密原理与教学用法

维吉尼亚密码用一个循环关键词给每个位置配不同位移,比凯撒密码坚挺得多。本文讲清多表代换原理、关键词怎么对齐字母、一个完整的加解密例子,以及它三百年难破的历史和今天的教学价值。

发布于 作者 李雷
#维吉尼亚密码 #Vigenere #多表代换 #密码学 #加密解密

维吉尼亚密码(Vigenère)入门:关键词加解密原理与教学用法

凯撒密码人人都听过,把每个字母往后挪三位,A 变 D。它的问题也人人都能猜到:整段文字用同一个位移,字母频率原封不动,英文里 E 最多,密文里出现最多的那个字母多半就是 E,顺藤摸瓜很快就破了。维吉尼亚密码(Vigenère)正是为了堵住这个口子而生,它把"一个固定位移"换成"一组随关键词轮转的位移",一下子让频率分析失了准头。

多表代换:位移会动的密码

凯撒密码只有一张替换表,维吉尼亚密码有二十六张。它用一个关键词来决定每个位置用哪一张表。把关键词沿着明文循环铺开,一个关键词字母对一个明文字母,每个明文字母按对应关键词字母的字母表序号位移,其中 A=0、B=1、C=2,以此类推,Z=25。

关键就在"循环"两个字。用关键词 KEY 时,第一个明文字母按 K 移 10 位,第二个按 E 移 4 位,第三个按 Y 移 24 位,到第四个又回到 K 移 10 位,第五个回到 E 移 4 位。同一个明文字母 A,落在第一位会被加密成 K,落在第二位会被加密成 E,落在第三位会被加密成 Y。同一个字母在不同位置加密成不同结果,这就是"多表"的含义,也是它能扛住频率分析的根本原因:密文里的字母分布被关键词搅匀了,看不出哪个是 E。

一个完整的加解密例子

光说原理不如算一遍。拿密码学教科书里最经典的明文 ATTACKATDAWN,关键词 LEMON,先把关键词循环到和明文一样长,变成 LEMONLEMONLE,然后逐对相加:

明文  A T T A C K A T D A W N
关键  L E M O N L E M O N L E
密文  L X F O P V E F R N H R

逐位算给你看:A 加 L(11)得 L,T 加 E(4)得 X,T 加 M(12)得 F,A 加 O(14)得 O,C 加 N(13)得 P,一路下来得到 LXFOPVEFRNHR。解密就是反着来,把密文每个字母按对应关键词字母往前移同样的位数,LXFOPVEFRNHR 配上 LEMON 又老老实实变回 ATTACKATDAWN。再举个短一点的:明文 HELLO 配关键词 KEY,关键词循环成 KEYKE,H 加 K 得 R,E 加 E 得 I,L 加 Y 得 J,L 加 K 得 V,O 加 E 得 S,密文就是 RIJVS。你可以在 维吉尼亚密码工具 里把这两组例子都敲一遍,下方的对照视图会一格一格显示是哪个关键词字母在出力。

有一处细节最容易翻车

我自己第一次写维吉尼亚实现时栽过一个坑:让空格和标点也消耗关键词。当时觉得反正非字母原样输出就行,没多想。结果一段带空格和逗号的文字,解密出来前半句对、后半句全是乱码,排查半天才发现是关键词指针被空格推着跑偏了。

正确的标准做法是:只有 A–Z 和 a–z 参与位移,数字、空格、标点、表情和中文一律原样穿过,而且不占用关键词位置。这样关键词指针始终只跟着真正的字母走,加密和解密两边的对齐才不会错开一格。这个看似不起眼的规则,恰恰是绝大多数测试向量默认的约定,也是验证自己代码时第一个该比对的点。

难破三百年的历史

维吉尼亚密码常被挂在十六世纪法国外交官 Blaise de Vigenère 名下,虽然类似思路更早就有人提过。它面世后一度被叫作 le chiffre indéchiffrable,意思是"无法破译的密码",这个名号扛了大约三百年。直到 1863 年,普鲁士军官 Kasiski 公布了他的检验法:从密文里找重复出现的片段,这些重复往往是相同明文撞上相同关键词位置造成的,片段之间的距离多半是关键词长度的倍数。算出关键词长度后,整段密文就被拆成若干条单一位移的凯撒密码,逐条用频率分析各个击破。后来 Friedman 的统计方法又把这套流程做得更利落。一旦关键词长度暴露,维吉尼亚的护城河就空了。

今天它还能用来做什么

破解方法成熟之后,维吉尼亚早已不是保密手段。需要真正保护的内容,请用 AES 这类现代加密,可以看看 AES 文本加密工具 这种基于现代算法的方案,而不是任何古典密码。

那它就没用了吗?恰恰相反,它是讲密码学最好的教具之一。让学生亲手敲 ATTACKATDAWN 配 LEMON、看它变成 LXFOPVEFRNHR、再解回去,"每个位置换一张表"这个抽象概念一下就具体了,比黑板上干讲管用得多。它也是 CTF 和解谜活动的常客,一段密文加一句"关键词是某乐队名"的提示,就是一道现成的题。想顺手对比一下它和最朴素的古典密码差在哪,可以打开 凯撒密码工具 把同一句话用单一位移加密一遍,两相对照,多表代换的好处立刻看得清清楚楚。

记住一句话就够了:维吉尼亚密码值得理解,值得拿来教学和玩谜题,但别拿它保护任何你真在乎的东西。


Made by Toolora · Updated 2026-06-13