古典密码-维吉尼亚密码Vigenere

维吉尼亚密码Vigenère基础知识

维吉尼亚密码是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码中的一种

生成维吉尼亚密码,需要使用表格法。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。如下

0ptgfJ.png

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_p - K_r}\over {K_o - K_r} \]

其中,观察概率\(K_o\)

\[K_o = {{\sum_{i=1}^c}n_i(n_i-1)\over N(N-1)} \]

其中,c是指字母表的长度(英文为26),N指文本的长度,\(n_1\)\(n_c\)是指密文的字母频率,为整数。

此方法只是一种估计,会随着文本长度的增加而更为精确。

在线网站破译

网站地址

相关题目

题目来源:https://adworld.xctf.org.cn/task/answer?type=crypto&number=5&grade=1&id=5451&page=1

文件信息

0pyriq.png

解题方法

这里提供一个非常强的在线解密网站,在线解密维吉尼亚密码,页面如下

0p6G79.png

将密文cipher填入方框中,点击解密即可

在下方会显示出分析的信息

0pcCNR.png

在明文里面搜索得到flag关键字,即可得到flag

flag{vigenereisveryeasyhuh}

0pcKUA.png

posted @ 2020-09-24 22:35  labster  阅读(2544)  评论(0编辑  收藏  举报