Python 如何解密vigenere列转置密码

Python 如何解密vigenere列转置密码,python,python-2.7,encryption,transpose,vigenere,Python,Python 2.7,Encryption,Transpose,Vigenere,我正在进行旧的考试,几天后就要期末考试了。我想解密一个密文,它首先由vigenere加密,然后由columna转置加密。如何解密以获取原始消息 message -> rgyqhbmnwaazxcajittuzqyagkx vigenere key -> final columnar transposition key -> exam 我在这上面花了几个小时,但什么也没说出来。首先我想由专栏作家维格纳解密。我认为输出应该是英文的,但我只是得到了垃圾。下面是我的vigenere代

我正在进行旧的考试,几天后就要期末考试了。我想解密一个密文,它首先由vigenere加密,然后由columna转置加密。如何解密以获取原始消息

message -> rgyqhbmnwaazxcajittuzqyagkx
vigenere key -> final
columnar transposition key -> exam
我在这上面花了几个小时,但什么也没说出来。首先我想由专栏作家维格纳解密。我认为输出应该是英文的,但我只是得到了垃圾。下面是我的vigenere代码,我想问题出在这个专栏上,我遇到的所有代码都以数字为键,但我有一个字母键

def decrypt(message, password):
    decrypted = ''
    for i in range(0, len(message)):
        letter = ord(message[i]) - ord(password[i%len(password)]) + 65
        if letter < 65:
            letter += 26
        decrypted += chr(letter)
    return decrypted
def解密(消息、密码):
解密=“”
对于范围(0,len(消息))中的i:
字母=ord(信息[i])-ord(密码[i%len(密码)])+65
如果字母<65:
字母+=26
解密+=chr(字母)
返回解密

谢谢

柱状换位确实以单词为键,而不是数字。如果“exam”是键,则从左到右写出消息,以四行为一行,从上到下读取密文,从第3列开始,然后从第1列开始,然后从第4列开始,最后从第2列开始。顺序来自字母“e”、“x”、“a”、“m”的字母顺序:“2”、“4”、“1”、“3”

例如,要加密“这就是消息”:

-->ITEG系SHSE HSMA

即“Itegtieshssehsma”

要解密,请执行相反的操作。我不想为你解决你的家庭作业,但我要说的是,当你通过带“exam”的列换位正确解密时,你会发现一个以“nzrawq…”开头的字符串


当你用Vigener密码进一步解密该字符串时,你确实会发现英文单词,特别是以“iAllywant…”开头的字符串。

你对我的训练再好不过了
E  X  A  M
----------
T  H  I  S
I  S  T  H
E  M  E  S  
S  A  G  E