维吉尼亚密码编码器/解码器(关键词密码)

在浏览器中完成维吉尼亚密码的加密与解密,使用关键词让每个字母的偏移量随位置变化。可用同一个关键词互相加密与解密,并逐字符查看转换过程。所有处理均在浏览器本地完成,不会发送到服务器。

什么是维吉尼亚密码(Vigenère Cipher)

维吉尼亚密码(Vigenère Cipher,关键词密码)是一种多表式换字密码,它利用关键词的每个字母,为明文的每个字母分别确定不同的偏移量。与凯撒密码对整段文字只使用一个固定偏移量不同,维吉尼亚密码会将关键词循环重复到与明文等长,再用对应位置关键词字母所代表的数值(A=0、B=1……)来偏移相应的明文字母。本工具同时支持"加密"(由明文和关键词生成密文)与"解密"(由密文和关键词还原明文),并会逐字符展示转换过程。

只要使用同一个关键词,加密与解密就是互为镜像的对称操作,只是输入输出的方向不同。所有计算都在浏览器本地完成,你输入的明文、密文和关键词都不会被发送到任何服务器。无论是想弄懂原理的学习场景,还是模拟真实通信的验证场景,都可以使用这个工具。

维吉尼亚密码编码器/解码器的使用方法

  1. 选择模式 想把明文变成密文就选择"加密",想把密文还原成明文就选择"解密"。
  2. 输入文本 加密时输入明文,解密时输入密文。非字母字符会原样保留在结果中。
  3. 输入关键词 关键词只能由字母组成,加密与解密必须使用完全相同的关键词。
  4. 执行并查看结果 点击"执行"后,结果栏会显示转换后的文本,明细表中可以逐字符查看应用的偏移量。
  5. 尝试反方向 使用"将结果作为输入"可以把刚加密的结果直接送入解密模式,验证往返是否一致。

用好本工具的小技巧

  • 维吉尼亚密码曾被称为"无法破译的密码"(le chiffre indéchiffrable),大约300年间没有找到实用的破译方法。
  • 由于关键词会循环使用,关键词越短,相同的偏移模式重复得越快,为密码分析提供的线索也越多。关键词越长通常越安全。
  • 空格、标点和数字会原样输出,不会消耗关键词的位置,因此改变换行或空格的方式不会影响加密的规律性。
  • 加密与解密使用同一个关键词,是对称操作。点击"将结果作为输入"按钮,即可立即用解密模式验证刚才的加密结果。
  • 输出会保留原始输入的大小写(内部的偏移计算基于字母在字母表中的位置进行)。

维吉尼亚密码的应用场景

密码学的学习与练习

无论是课堂学习还是自学,都能亲手用真实字符串验证多表式换字密码的原理,而不只是停留在理论层面。

制作卡西斯基试验的练习素材

自行指定明文和关键词生成密文,再把它作为推算周期、还原关键词的解密练习题材。

制作解谜游戏的密文

在密室逃脱或解谜游戏中,可以快速做出比凯撒密码更难破解的提示文字。

重现历史上的加密方式

按照19世纪军事与外交通信中实际使用过的步骤,重新体验当时的加密流程。

维吉尼亚密码相关术语

关键词密码
指反复使用固定关键词来决定每个字母偏移量的密码方式统称。关键词越长、越不规则,通常越难被破解。
多表式换字密码
对同一套明文字母表使用多张换字表的密码方式。维吉尼亚密码相当于按关键词字母个数在多个凯撒密码之间切换使用。
维吉尼亚方阵
一张列出全部偏移模式的26×26表格,历史上用于手工加密与解密。行对应关键词字母,列对应明文字母。
已知明文攻击
在已经掌握部分密文对应明文的前提下推算密钥的解密手法。问候语等固定开头常常成为这类攻击的线索。
密码强度
指密码抵抗被破解的程度。维吉尼亚密码的强度主要取决于关键词的长度与不规则程度,关键词越短、重复得越频繁,就越容易暴露周期性而被削弱。
一次性密码本
使用与明文等长且只用一次的随机密钥的加密方式。若把维吉尼亚密码的关键词换成这样的一次性随机密钥,理论上就无法被破解。

常见问题

1863年,普鲁士陆军军官弗里德里希·卡西斯基发表了"卡西斯基试验",通过分析密文中重复子串之间的距离来推算关键词长度,从而实现了系统性的破译。如果已知部分明文,也可以通过已知明文攻击来还原关键词。

凯撒密码对整段文字只使用一个固定的偏移量,而维吉尼亚密码使用关键词各字母对应的数值,对每个字母循环应用不同的偏移量。因此单纯的频率分析无法直接破解它,而这恰恰是凯撒密码容易被破解的原因。

长期以来它被归功于法国外交官布莱瑟·德·维吉尼亚,但实际上16世纪意大利密码学家乔瓦尼·巴蒂斯塔·贝拉索早在1553年就发表了几乎相同的方法。维吉尼亚本人后来因其著作而与另一种密码产生关联,这一归属其实是历史上的误传。

该方法寻找密文中重复出现的相同子串,并取这些重复出现位置之间距离的最大公约数来推算关键词长度。一旦知道长度,就可以对每个位置分别进行普通的频率分析,相当于把问题拆解成若干个简单的凯撒密码来破解。

不需要,任何由字母组成的字符串都可以作为关键词,无论是否有实际含义。不过实际使用中人们常常为了方便记忆而选择真实单词,而这种可预测性反而有时会为卡西斯基试验等破译手段提供额外的线索。
工具君

闲话 ― 卡西斯基试验如何攻破"无法破译的密码"

维吉尼亚密码以16世纪法国外交官布莱瑟·德·维吉尼亚的名字命名,但他很可能并非其真正的发明者。早在1553年,意大利密码学家乔瓦尼·巴蒂斯塔·贝拉索就已经发表了本质相同的方法:用循环使用的关键词决定每个字母各自的偏移量。维吉尼亚本人后来因16世纪的著作而与另一种密码产生关联,这一误传直到19世纪才被广泛固定下来,成为科学史上归属张冠李戴的一个典型案例。

凯撒密码只使用一个固定的偏移量,机械式的恩尼格玛密码机则每次转子转动都会改变偏移量,而维吉尼亚密码通过循环使用一个便于记忆的关键词,实现了逐字母不同的偏移量。用单一偏移量加密的凯撒密码,仅凭基础的频率分析就很容易破解;而维吉尼亚密码在表面上抹平了字母出现频率的分布,因此直到19世纪中叶都被称为"无法破译的密码(le chiffre indéchiffrable)",并在实际中被广泛使用。

这一声誉终结于1863年,普鲁士陆军军官弗里德里希·卡西斯基发表了"卡西斯基试验"。他通过测量密文中重复子串之间的距离,展示了如何推算关键词的长度;一旦知道长度,就可以对每个位置使用与破解简单凯撒密码相同的频率分析方法。这使得曾经实用了约三百年的密码被系统性地攻破,成为密码分析史上真正的转折点。

有趣的是,如果关键词与明文一样长且只使用一次,维吉尼亚密码在数学上就等价于理论上不可破译的"一次性密码本"。而实际运用中关键词过短且被反复使用,正是其真正的弱点所在,这一关于密钥管理重要性的历史教训,至今仍影响着现代密码学的设计。