Я пытался создать программу для атаки методом грубой силы, которая будет принимать ввод зашифрованного сообщения Цезаря и пытаться сломать его без коэффициента ротации. Выходными данными должен быть список всех 26 коэффициентов вращения с соответствующими сообщениями (например: KEY # 01: (смещение входных символов на 1 и т. Д.)), И один из них должен содержать дешифрованное сообщение. Номер ротации этого сообщения будет тогда ключевым (надеюсь, это не слишком запутало). Вот мой код:
message = input("Enter a message: ") # user inputs message
offset = 0
while offset < 26:
for char in message:
decrypt = " "
if not char.isalpha(): # to keep punctuation unchanged
decrypt = decrypt + char
elif char.isupper():
decrypt = decrypt + chr((ord(char) - offset - 65) % 26 + 65) # -65 +65 for uppercase Z
else:
decrypt = decrypt + chr((ord(char) - offset - 97) % 26 + 97) # -97 +97 for lowercase z
offset = offset + 1
print ("KEY #:", offset, message)
Программа не расшифровывает ввод и по какой-то причине печатает один и тот же ввод 41 раз ... Я не очень опытный программист, поэтому было бы здорово, если бы кто-нибудь мне помог.