Vigenere密码
的Vigenere密码加密信息的方法是不是采用了一系列不同的方法凯撒密码基于特定关键字的字母。Vigenère密码比一个凯撒密码更强大,也更难破解。
内容
介绍
一个 世纪法国外交官Blaise de Vigenère发明了一种非常简单的密码,对于任何意外的各方来说,破译这种密码都有一定难度。有太多的键可以使用暴力破解,即使已知键来自特定的语言。它不能用在简单上工作的单词模式攻击来打破替换密码.直到被认为是计算机之父的查尔斯·巴贝奇(Charles Babbage)将其打碎 世纪。
Vigenère密文是一个Caesar shift和一个关键字的组合。关键字的长度决定了对明文应用不同加密的次数。例如,如果关键字长度为4个字符,则明文将被分为4个潜台词,并根据关键字中对应字母的值对每个潜台词进行Caesar移位。这种密码是多字母的,这意味着一个字符可以用不同的方式加密——例如,一个潜台词中的“a”可以被编码为“T”,而在另一个潜台词中,它可以被编码为“P”。这种干扰频率分析,一种通过查看最常见的字符并将它们映射到(非加密)语言中最常见的字符来破解代码的方法。
Vigenère代换是基于上表。Vigenère密码使用这个表和关键字来加密消息。
所有26种可能的Caesar密码都显示在表中(每行一个),因为每行显示的字母表比上一行多一个字母。关键字母显示在每行的开头。行的其余部分显示字母A到Z(按移位的顺序)。尽管有26个键行显示,编码器将只使用与键字符串中有唯一字母相同的行(不同的字母)。
表格第一行中的字母表示消息中的字母。要对消息进行编码,找到以要编码的字母为标题的列,找到它与映射到消息中的字母的关键字行相交的位置。交点上的字母将是消息字母编码的字母。
假设我们希望加密明文消息
太阳和月亮上的人
,
使用关键字王
.首先在明文消息上方输入关键字,必要时可以重复多次。使用上表导出密文,对于明文中的每个字母,找到对应关键字字母给出的行与明文字母本身给出的列的交集,即可提取出密文字母。
关键词:KIN GKI NGK ING KIN GK ING KING明文:太阳和月球上的人密文:DPR YEV NTN BUK WIA OX BUK WWBT
要解密文本,请在关键字字母所在行中找到密码字母,然后查看密码字母所在列。
解密文本:
关键词:KIN GKI NGK ING KIN GK ING KING密文:DPR YEV NTN BUK WIA OX BUK WWBT明文:太阳和月球上的人
加密以下信息:
密码学非常酷
,
使用关键字数学
.关键字:math math MATHMATHMAT明文:密码学超级酷密文:ORRWFOZYMPAF US LBBEK JAOE解密文本:
关键字:math math MATHMATHMAT密文:ORRWFOZYMPAF US LBBEK JAOE明文:CRYPTOGRAPHY IS SUPER COOL关键词:MATHMATHMATH MATHMATHMAT密文:ORRWFOZYMPAF US LBBEK JAOE明文:CRYPTOGRAPHY IS SUPER COOL
在这里是一个在线的Vigenère密码,你可以用它生成你自己的加密信息并检查你的答案。
密码分析
Vigenère密码的优点在于,由于密码经过不同的移位旋转,不容易进行频率分析,所以相同的明文字母不一定会被加密为相同的密文字母。例如,假设“e”是英语单词中最常见的字母。使用频率分析的解码人员可能认为编码信息中最常见的字母很可能对应于“e”。然而,由于Vigenère密码以不同的方式对相同的字母进行编码,根据关键字的不同,“e”可以被编码成许多不同的字母,从而打破了频率分析背后的假设。因此,他们被许多人视为坚不可摧的300年。
Vigenère密码很难用暴力破解,因为消息中的每个字母都可以被编码为 信件。因为消息的编码取决于所使用的关键字,所以可以对给定的消息进行编码 的方式, 关键字的长度。例如,如果我们只知道一条消息是用一个由7个字母组成的单词编码的,那么它就可以被编码进去 十亿的方式![1]
Vigenère密码的主要弱点是其密钥的重复特性。如果密码分析师正确地猜测了密钥的长度,那么密文就可以被视为交织在一起的凯撒密码,单个的凯撒密码很容易被破解。例如,在上面的密码中,明文的
在消息中出现两次,在这两种情况下,它都与关键字的前两个字母完全对齐。因此,它产生相同的密文鼓
.
密文中的重复表示明文中的重复,重复之间的空格表示关键字的长度。
事实上,任何使用Vigènere密码加密的消息都会产生许多这样的重复实例。虽然不是每个重复的实例都是对相同明文进行加密的结果,但很多都是,这为破解密码提供了基础。这种分析方法叫做Kasiski考试.
实现Vigenere密码
下面是在Python中实现Vigenère密码的一种方法。[2]
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
参考文献
- Sweigart,。VIGENERE密码.2016年5月22日,从https://inventwithpython.com/hacking/chapter19.html
- 伍利,J。Python中的Vigenère密码.2016年5月13日,从http://jamesdotcom.com/?p=258