如何解密vigenere柱状转置密码

时间:2015-05-13 02:07:55

标签: python python-2.7 encryption transpose vigenere

我正在通过旧考试,我的决赛将在几天内完成。我想解密一个密文,它首先由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

感谢

1 个答案:

答案 0 :(得分:0)

柱状转置确实将单词作为键,而不是数字。如果&#34;考试&#34;是关键,然后你从左边写出消息写入四行,从第3列开始从上到下读取密文,然后是第1列,然后是第4列,第2列。顺序来自字母字母的顺序&#34; e&#34;,&#34; x&#34;,&#34; a&#34;,&#34; m&#34;:&#34; 2nd&#34;,& #34;第4&#34;,&#34;第1&#34;,&#34;第3&#34;。

例如,加密&#34;这是消息&#34;:

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

- &GT; ITEG TIES SHSE HSMA

I.e。,&#34; ITEGTIESSHSEHSMA&#34;。

要解密,请执行相反的操作。我不想为你解决你的作业,但是我会说,当你用#34;考试&#34;通过柱状换位正确解密时。你会发现一个以&#34; nzrawq ...&#34;

开头的字符串

当你使用vigenere密码进一步解密该字符串时,你确实会找到英文单词,特别是一个以&#34开头的字符串;真正想要...&#34;