Vigenere Cipher密码解码

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Vigenere Cipher解密

一、实验任务

Vigenere Cipher加密密文如下:KVNIICWZSNOHUNXQGMRNAHUVWPTBWBPKVYPTBASHRZVIIWIBCGJSGEYGFMOAKBTBJKMAQ EGSQJIJHTRGJSFRXTNBVFVCORWGENSIKRRAXVAIHNNZZRRCKMQEGOGRHGJCOYKVNIICWZ SNOHUNXQGMRNACAGLGKMRUKZYFSHZMCEIWNGLGLWBFQTSBVOXZGYCJRFEPWBVRUCAFSHY WFZGFFYEXXWKAGFFJMNEJSNDZRGSUBBRBYBGBKGMPSECHGUIVTJZRQTOESVAMFUQCQVLC OMOQTSNZXJTBCAGRNLIXXVHUGGGNXGHNAVUGVFWKIXWNUHNGIUPMZGGFVAKYBBVGJSURE VHNWALIFGMEXAKRNHREMPZEWGJHURLGTBCSQDCEIULQCAYWYYFGMZOAUTBEQGWQBGQOAB EUBACSHFRRHQFIBQLIFGMEX

请写出详细解密过程。

二、Vigenere加密与解密

Vigenere加密为单表代换密码,其加密过程可表述为:

设m是一个正整数,定义P=C=K=(Z26)m,对任意的密钥K=(k1,k2,…,k m),定义e K x1,x2,…,x m=(x1+k1,x2+k2,…,x m+k m)和d K y1,y2,…,y m=(y1−

k1,y2−k2,…,y m−k m)为Vigenere加密和解密过程,以上所有运算都在(Z26)m 上进行。

三、Vigenere密文的破译

Vigenere解密首先在于确定密钥长度m,意大利的乔瓦·尼·波塔于1602

年首先发现Vigenere明/密文中重复字母串的距离正好是密钥长度的倍数,这一现象称为“合拍”现象。由此出发,产生的确定m长度常用方法有两种:方法一是Kasiski测试法;方法二是重合指数法。

重码分析法思路认为间距是密钥长度整数倍的相同子串有相同密文,反过来,密文中两个相同的子串对应的密文相同的可能性很大。但此时需要注意真重复与偶然重复,需要剔除偶然重复,取真重复距离的因数作为密钥长度m。

Kasiski测试法思路是对一份用周期性多表密码加密的密文,确定其中所有的重复出现的字母串,计算他们之间的距离,并对这些距离进行因子分解,出现频率较高的因子很可能是密钥的长度。

两种方法本质思想是相同的,具有异曲同工之妙。本文将采用Kasiski测试法破译上述密文。根据密文,可以统计重复字母序列及其之间的距离(统计代码见附件),一部分列表如下,

上述密文重复字符串中,部分是由于偶然因素导致重复的,直觉判断可知长

度较长字符串偶然重复概率极低,因此首先认为字符串KVNIICWZSNOHUNXQGMRNA 、LIFGMEX 为真重复,其最大公约数为10。进一步观测,可以发现大多数重复序列的距离都包含因数10。

下面从概率角度考虑,密文字符串发生重复的概率。设y 是一个长度为n 密文,即y =y 1y 2…y m ,其中y i 是密文字母,求从中抽到两个相同字母的概率是多少?

为此,设N A 为字母A 在这份密文中的频数,设N B 为字母B 在这份密文中的频

数,依此类推。从n 个密文字母中抽取两个字母的方式有C n 2

=n(n −1)/2,而其中N A 个A 组成一对A 的方式有C N A

2=N A (N A −1)/2,于是从y 中抽到两个字母都为A 的概率为[N A (N A −1)]/[n(n −1)],因此,从y 中抽到两个相同字母的概率为:

N i (N i −1)

Z i =A n (n−1)

,这个数据称为这份密文的重合指数,记为IC 。根据概率论中的大

数定律,如果y 是用单表加密的,那么当n 较大时,IC 很可能接近于0.0687。

现在选取m=10,将密文一行一行写在有10列的表格里,对各列计算相应重合指数IC ,最后求取平均IC ,可得0.070855,接近理论值0.0687。根据上述分析判断确定密钥长度为10。下图是将密文按列统计各字母出现频数及计算各列IC 结果。

接下来是确定具体的密钥K =(k 1,k 2…k 10)。现令f 0,f 1…f 25分别表示字符串y i (1≤i ≤10)中字母A ,B …Z 出现的频数,字符串y i 长度为n i ,则26个字母在y i 中出现频率为

f 0i ,f 1i …f 25

i

考虑到字符串y i 是由对应的待加密的明文子集中的字母移动k i 个位置所得的,因此移动后的概率分布为

f k i n i ,f 1+k i n i …f 25+k i

n i

假设0≤g ≤25,定义M g = p i f i +g n i

25i =0

如果g =k i ,类似前面重合指数的讨论,应该有

M g ≈ p i 225

i =0

=0.065

如果g ≠k i ,则M g 一般小于0.065。

根据上表求得结果,进一步可求得Mg 如下图所示,由结果推得密钥很可能是K=(2,14,13,13,4,2,19,8,14,13),对于字母是CONNECTION 。根据密钥解密

后明文是:

Ihaveadreamthatonedaythisnationwillriseupliveuptothetruemeaningofitscreed:

“weholdthesetruthstobeself-evidentthatallmenarecreatedequal.”I haveadreamthatonedayont heredhillsofGeorgia, thesonsofformerslavesandthesonsofformerslaveownerswillbeabletositdowntogetheratthetable ofbrotherhood. IhaveadreamthatonedayeventhestateofMississippi, astateswelteringwiththeheatofinjustice ,sweltering(闷热的)withtheheatofoppressionwillbetransformedintoanoasis(绿洲)offreedomandjustice.

四、总结

Vigenere密码作为一个多表代换密码,相对于单表代换密码而言安全性更高,破解难度也更高。但是对于密钥已定的Vigenere密码来说,仍可以通过唯密文攻击来实现破解,关键在于密钥长度m的确定。而正由于密钥长度的有限性,在面对长篇幅明文时,密文中就会暴露出重复字符串,这些重复密文字符串则就提供了密钥的长度信息。进一步,借助于重合指数加以判定,就可以推测出加密密钥的长度,最终破解密码。

相关文档
最新文档