Python 解密,如何找到密钥
我必须解密一个短语来分配我的任务,并尝试通过使用字母E、T、O、I、a、N的字母频率将短语从-1移到-25来找到密钥。我的公式是正确的,但我不知道如何将字母频率从-1移到-25。我假设我会以某种方式使用从(-1到-26)的范围。这是我的代码:Python 解密,如何找到密钥,python,encryption,decoding,Python,Encryption,Decoding,我必须解密一个短语来分配我的任务,并尝试通过使用字母E、T、O、I、a、N的字母频率将短语从-1移到-25来找到密钥。我的公式是正确的,但我不知道如何将字母频率从-1移到-25。我假设我会以某种方式使用从(-1到-26)的范围。这是我的代码: phrase=input('What would you like decrypted?') e=0 t=0 o=0 a=0 i=0 n=0 f
phrase=input('What would you like decrypted?')
e=0
t=0
o=0
a=0
i=0
n=0
for letter in phrase:
if letter== 'e':
e+=1
e_freq= .1119-e/10
e_ans= e_freq*e_freq
if letter== 't':
t+=1
t_freq= .0928-t/10
t_ans= t_freq*t_freq
if letter== 'o':
o+=1
o_freq= .0819-o/10
o_ans= o_freq*o_freq
if letter== 'a':
a+=1
a_freq= .0754-a/10
a_ans= a_freq*a_freq
if letter== 'i':
i+=1
i_freq= .0710-i/10
i_ans= i_freq*i_freq
if letter== 'n':
n+=1
n_freq= .0643-n/10
n_ans= n_freq*n_freq
square_sum= e_ans+t_ans+o_ans+a_ans+i_ans+n_ans
print(square_sum)
要使用所需的值范围,请尝试:
for i in range(-1, -26, -1):
使用负的步骤将向后计数
一般来说,您可以稍微整理一下代码:
expected = {"e": 0.1119, ...}
counts = {letter: phrase.count(letter) for letter in expected}
match = sum((expected[letter]-(counts[letter]/10))**2 for letter in expected)
您将不得不运行您已经编写了25次的代码,但您有以下几行代码:
for letter in phrase:
if letter == 'e':
为每个字母查找“这是什么字母,移位-1?”
然后在下一次运行时,“这个字母会被-2移位多少?”
您可以通过创建字母表中所有字母的字符串,然后使用.index()
转到字母->数字位置,以及[]
索引转到数字位置->字母:
>>> alphabet = 'abcdefghijklmnopqrstuvwxyz'
>>> print alphabet.index('m')
12
>>> print alphabet[11]
l
请检查缩进。