Python 解密,如何找到密钥

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

我必须解密一个短语来分配我的任务,并尝试通过使用字母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
        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

请检查缩进。