2015-05-13 3 views
0

Я прохожу через старые экзамены, мой финал проходит через несколько дней. Я хочу расшифровать зашифрованный текст, он был сначала зашифрован vigenere и затем зашифрован транспозицией columna. Как дешифровать, чтобы получить исходное сообщение?Как расшифровать шифр столбчатой ​​транспозиции vigenere

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

Столбчатый транспозиция действительно берет слово в качестве ключа, а не число. Если «экзамен» является ключом, то вы выписываете сообщение слева для записи в строках из четырех и считываете текст шифрования сверху вниз, начиная с столбца 3, затем столбца 1, затем столбца 4, затем столбца 2. Порядок происходит в алфавитном порядке букв «e», «x», «a», «m»: «2nd», «4th», «1st», «3rd».

Например, для шифрования "ЭТО СООБЩЕНИЕ":

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

-> ITEG СВЯЗЕЙ SHSE HSMA

есть, "ITEGTIESSHSEHSMA".

Чтобы расшифровать, сделайте обратное. Я не хочу решать вашу домашнюю работу для вас, но я скажу, что, когда вы правильно расшифровываете столбчатую транспозицию с помощью «экзамена», вы найдете строку, начинающуюся с «nzrawq ...»

Когда вы тогда еще расшифруйте эту строку с помощью шифрования vigenere, вы действительно найдете английские слова, в частности строку, начинающуюся с «ireallywant ...»

+0

вы не могли бы обучить меня лучше –

+0

. Повеселись. – hft