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