如何解密 vigenere 柱状转置密码

How to decrypt a vigenere columnar transposition cipher

我正在参加旧考试,几天后就是期末考试。我想解密一段密文,先用vigenere加密,再用columna转置加密。如何解密以获取原始消息?

message -> rgyqhbmnwaazxcajittuzqyagkx
vigenere key -> final
columnar transposition key -> exam

我在这上面花了几个小时,但没有得到任何结果。我首先想通过柱状解密,然后是 Vigenere。我认为输出应该看起来像英文,但我只是变得垃圾。我的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

谢谢

柱状转置确实以单词为键,而不是数字。如果 "exam" 是密钥,那么您从左边写出消息,以每行四行的形式写入,然后从上到下从第 3 列开始读出密文,然后是第 1 列,然后是第 4 列,然后是第 2 列。该顺序来自字母 "e"、"x"、"a"、"m" 的字母顺序:“2nd”、“4th”、“1st”、“3rd”。

例如要加密"THIS IS THE MESSAGE":

E  X  A  M
----------
T  H  I  S
I  S  T  H
E  M  E  S  
S  A  G  E

--> ITEG 联系上海证券交易所 HSMA

即"ITEGTIESSHSEHSMA"。

反之即可解密。我不想给你解决你的作业,但我会说,当你通过"exam"的柱状转置正确解密时,你会发现一个以"nzrawq..."

开头的字符串

当您使用 vigenere 密码进一步解密该字符串时,您确实会找到英文单词,特别是以 "ireallywant..."

开头的字符串