古典密码-维吉尼亚密码Vigenere
维吉尼亚密码Vigenère基础知识
维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码中的一种
生成维吉尼亚密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。如下
Tip:横着看为密钥,竖着读为明文
这样单单看,很难了解到其中的原理,下面引入一个例子
举个栗子
假设我们的明文M为:
CRYPTOGRAPHY
选择一组任意长度的密钥K(若小于明文长度,则重复),这里我们选择NIGHT
作为关键字,重复关键字得到最终的密钥K:
NIGHTNIGHTNI
加密
从明文的第一个字母C开始,对应密钥中第一位字母N,查表得知为P(明文竖着读,密钥横着读),重复此操作,最终得到:
明文:CRYPTOGRAPHY
密钥:NIGHTNIGHTNI
密文:PZEWMBOXHIUG
解密
找到密钥第一个字母N对应的那一栏,找到P,再看最左边对应的字母,重复此操作得到明文
维吉尼亚密码Vigenère的破译
参考:维吉尼亚密码破译
普通的加密可以通过使用简单的频率分析破解。但是在维吉尼亚密码中,E
可以被加密成不同的密文,因而简单的频率分析在这里并没有用。
卡西斯基试验
卡西斯基试验的原理就是是基于类似the
这样的常用单词在密文中的重复出现。例如,明文中不同的CRYPTO
可能被密钥ABCDEF
加密成不同的密文:
密钥:ABCDEF AB CDEFA BCD EFABCDEFABCD
明文:CRYPTO IS SHORT FOR CRYPTOGRAPHY
密文:CSASXT IT UKSWT GQU GWYQVRKWAQJB
此时明文中重复的元素在密文中并不重复。然而,如果密钥相同的话,结果可能便为(使用密钥ABCD
):
密钥:ABCDAB CD ABCDA BCD ABCDABCDABCD
明文:CRYPTO IS SHORT FOR CRYPTOGRAPHY
密文:CSASTP KV SIQUT GQU CSASTPIUAQJB
此时卡西斯基试验就能产生效果。对于更长的段落此方法更为有效,因为通常密文中重复的片段会更多。如通过下面的密文就能破译出密钥的长度:
密文:DYDUXRMHTVDVNQDQNWDYDUXRMHARTJGWNQD
其中,两个DYDUXRMH
的出现相隔了18个字母。因此,可以假定密钥的长度是18的约数,即长度为18、9、6、3或2。而两个NQD
则相距20个字母,意味着密钥长度应为20、10、5、4或2。取两者的交集,则可以基本确定密钥长度为2。
弗里德曼试验
佛里德曼于1920年发明佛里德曼试验,其基本原理是使用了重合指数来描述密文字母频率的不匀性,进而破译密码。\(K_p\)指目标语言中两个任意字母相同的概率(英文中为0.067),\(K_r\)指字母表中这种情况出现的概率(英文中为1/26=0.0385),从而密钥长度可以估计为:
其中,观察概率\(K_o\)为
其中,c是指字母表的长度(英文为26),N指文本的长度,\(n_1\)到\(n_c\)是指密文的字母频率,为整数。
此方法只是一种估计,会随着文本长度的增加而更为精确。
在线网站破译
相关题目
题目来源:https://adworld.xctf.org.cn/task/answer?type=crypto&number=5&grade=1&id=5451&page=1
文件信息
解题方法
这里提供一个非常强的在线解密网站,在线解密维吉尼亚密码,页面如下
将密文cipher
填入方框中,点击解密即可
在下方会显示出分析的信息
在明文里面搜索得到flag关键字,即可得到flag
flag{vigenereisveryeasyhuh}