Это проблема, которую я должен выяснить:
"Сообщение было шифрованием с использованием метода шифрования Vigenere, обсуждаемого в классе, и его шифрованный текст EQNVZ был перехвачен. Разрыв кода. Предположим, что ключ такой же длины, как и сообщение, а сообщение и ключ состоят только из прописных букв ".
Есть ли способ сделать это в python? Я знаю, что есть способ сделать шифрованный текст в python, но есть ли способ пойти другим путем?
Это спорный вопрос. Если "ключ имеет ту же длину, что и сообщение", тогда у вас есть одноразовая панель, которая скрывает все, кроме длины сообщения.
Поскольку ваш шифротекст настолько короток, возможно, проще всего просто переборщить его:
def break_vignere(input, list_of_words):
for word in list_of_words:
crypt = vignere(word)
if crypt == input:
return word
return None
Конечно, он может выйти из строя, если мы не найдем входной текст в наших list_of_words
.
если "EQNVZ" - это весь зашифрованный текст, тогда ключ также имеет 5 символов верхнего регистра, поэтому
from string import uppercase
from itertools import product, imap
for key in imap("".join, product(uppercase, repeat=5)):
if test(key):
break
проверит все ключи, предполагая, что у вас есть функция test()
которая проверяет, что открытый текст имеет верхний регистр и, возможно, против словаря.