密码学/破解维吉尼亚密码
外观
< 密码学
使用维吉尼亚密码加密明文,首先要选择一个由明文使用的符号字母表中的字母组成的关键字。然后,使用以下示例的方式,使用关键字来加密文本。
使用:明文:我喜欢一本书 并选择:关键字:cta
1. 将所有明文映射到数字 0-25 或字母表的长度
ilikewikibooks converts to 8 11 8 10 4 22 8 10 8 1 14 14 10 18
2. 以相同方式将关键字映射到数字
cta maps to 2 19 0
3. 以以下方式将密钥添加到明文中
8 11 8 10 4 22 8 10 8 1 14 14 10 18 2 19 0 2 19 0 2 19 0 2 19 0 2 19 resulting in 10 30 8 12 23 22 10 29 8 3 33 14 12 37
4. 取每个结果数字 mod 26(或对于一般情况,mod 字母表的字符数)
resulting in 10 4 8 12 23 22 10 3 8 3 7 14 12 11
5. 将每个数字映射回一个字母,以获得生成的密文
keimxwkdidhoml
使用关键字可以轻松地解密消息,只需反转上述过程即可。关键字可以是任何长度,等于或小于明文的长度。
在没有关键字的情况下,破解维吉尼亚密码的主要方法被称为卡西斯基检验,以第一个发表该方法的普鲁士少校的名字命名。第一步是确定密钥的长度。
给定一个加密的消息,例如
Plaintext: TOBEORNOTTOBE Keyword: KEYKEYKEYKEYK Ciphertext: DSZOSPXSRDSZO
通过检查密文,我们发现有几个重复的二字词,即 DS、SZ 和 ZO。从统计学上讲,这些二字词全部随机出现的可能性很小;重复出现的二字词很可能是明文中的重复出现。如果是这种情况,二字词必须在两次编码时都由密钥的相同部分编码。因此,密钥的长度是文本中重复出现的距离的因子。
二字词 | 第一个位置 | 第二个位置 | 距离 | 因子 |
---|---|---|---|---|
DS | 1 | 10 | 9 | 3 |
SZ | 1 | 10 | 9 | 3 |
ZO | 1 | 10 | 9 | 3 |
公共因子(事实上,在这个简单的例子中是唯一的因子)是 3 和 9。这大大缩小了可能性,而且在文本和密钥更长的情况下,效果更加明显。
一旦确定了密钥的长度,就可以应用稍加修改的频率分析技术。假设已知密钥的长度为三个。那么每三个字母就会用密钥的同一个字母进行加密。密文可以分成三个段 - 每段对应一个密钥字母 - 然后可以使用为 凯撒密码 描述的过程。