其他分享
首页 > 其他分享> > 1.2维吉尼亚密码

1.2维吉尼亚密码

作者:互联网

a)简介
维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
b)算法流程
加密过程:明文字母p对应的列和密钥字母对应的行的交叉点,就是加密后的密文字母c。
解密过程:在密钥字母k对应的行,找到相应的密文字母c,则c所在列对应的明文字母即为p。

在这里插入图片描述

图1.2.1 维吉尼亚矩阵

c)算法实现
加密:
在这里插入图片描述

图1.2.2 维吉尼亚加密
解密:
在这里插入图片描述

图1.2.3 维吉尼亚解密
d)算法验证
课件上的样例:
在这里插入图片描述

图1.2.4 维吉尼亚样例
验证:
在这里插入图片描述

图1.2.5 维吉尼亚验证
e)算法破解
多表代替算法用重合指数法破解:
1)重合指数法确定密钥长度
设一门语言由n个字母组成,每个字母出现的概率为 Pi ,则重合指数是指两个元素随机相同的概率之和,记作CI=∑Pi2 (1<= i <= n)。
经分析,英文中,一段文字是随机的话,CI≈0.038;如果这段文字是有意义的,那么CI≈0.065。实际上计算CI时,应该用这个公式:

(L:密文长度;fi:在密文中的出现次数;n:这门语言的字母个数)
然后算出不同密钥长度下,遍历该密钥长度区间,来计算每个密钥长度下的CI’的值。之后,去找出最接近0.065的值,其对应的密钥长度即为最可能的密钥长度。
在这里插入图片描述

图1.2.6 确定密钥长度
2)拟重合指数法确定密钥
在确定密钥长度之后,就可以根据拟重合指数法,来确定密钥。根据密钥长度来确定密文分组,然后,分别遍历每个密文字符的可能取值,以此来恢复该组明文,并计算相应的重合指数。将每组最高重合指数下对应的数字转换为字符连接,即得到相应的密钥。
在这里插入图片描述

图1.2.7 确定密钥
3)根据确定的密钥来恢复明文
由上一步得到的密钥,将密钥列表连接为字符串后,调用之前写好的解密函数,就可以得到明文。因为,我们知道猜测密钥就是正确的,解密得到的明文也就是正确的。
f)算法分析
通过多表代换,将明文的统计特性通过多个表的平均作用隐藏起来,相较于单表代换密码,增大了破解的难度。
破译以字母频率为基础的,只是直接的频率分析并不适用。通过卡西斯基试验或者就可以得到密钥长度,得到密钥长度,密钥就可以看作是多个凯撒密码结合到一起,每一个都可单独破解,就像上面的破解步骤。
g)实现难点
无。注意一下模为负数的情况,实现时需要增加语句矫正。

标签:1.2,字母,明文,密码,密钥,维吉尼亚,长度
来源: https://blog.csdn.net/weixin_43540515/article/details/113122450