python解密维吉尼亚
时间: 2023-10-17 22:37:50 浏览: 71
python程序维吉尼亚密码破解
5星 · 资源好评率100%
维吉尼亚加密是一种典型的分组加密方法,它对英文字母进行偏移得到新的英文字母,并且增加了密钥的长度,按分组进行加密。而维吉尼亚解密方法则是根据英文文章中26个英文字母的统计频率来进行筛选,以获得最符合的密钥。 在Python中,可以使用如下基本代码进行维吉尼亚解密:
```
def cracker(miwen, CI):
N = [0.0 * 26
CI2 = 0.0
j = 0
for i in range(len(miwen)):
if (miwen[i].isupper() or miwen[i].islower()):
j = j + 1
new_miwen = [0 * (j)
CT1 = [0 * (j)
CI1 = [0.0 * (len(new_miwen))
j = 0
for i in range(len(miwen)):
if (miwen[i].isupper() or miwen[i].islower()):
new_miwen[j = miwen[i]
j = j + 1
for i in range(1, len(new_miwen)):
for k in range(0, i):
for j in range(k, len(new_miwen), i):
N[(ord(new_miwen[j]) - 65) ** 2 = N[(ord(new_miwen[j]) - 65) ** 2 + 1
for m in range(26):
if (len(new_miwen) / i <= 20):
CI1[k = 0.0
else:
CI1[k = float(N[m * (N[m - 1)) / float((len(new_miwen) / i) * ((len(new_miwen) / i) - 1))
for n in range(len(N)):
N[n = 0.0
CI2 = CI2 + CI1[k]
CI2 = CI2 / i
CT1[i = abs(CI2 - float(CI))
CI2 = 0.0
for i in range(len(CI1)):
CI1[i = 0.0
minin = CT1 < minin):
lmin = i
minin = CT1[i]
return lmin
```
这段代码可以通过输入密文和密钥频率指数CI来解密维吉尼亚加密的文本。它会根据密文中的字母频率统计数据进行筛选,找到最符合的密钥。返回的lmin值即为最佳密钥的长度。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [维吉尼亚解密及Python实现](https://blog.csdn.net/weixin_43697025/article/details/93969299)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文