(1) Почему он не был правильно декодирован? Например: «Мне нравятся структуры данных и алгоритмы»
Прежде всего, алфавит уже присутствует в ASCII. Таким образом, нет необходимости переопределять алфавит в plain
или cipher
. Ключ - это смещение от символа открытого текста к символу зашифрованного текста, которое оборачивается сразу после z
.
. Таким образом, обычно вы преобразуете символ в индекс в алфавите от 0..25, а затем добавить (для шифрования) или вычесть (для расшифровки) ключ, по модулю 26 - размер алфавита. Затем, чтобы получить результат, вы превращаетесь обратно в персонажа. Вы уже делаете преобразование в индекс, используя ord(character) - ord(a)
. Обратное можно сделать, используя chr
.
(2) Я также запутался в заглавной букве «I» в начале зашифрованного сообщения. Есть ли у вас какие-либо идеи по этому поводу?
Ну, есть больше возможностей для односимвольных слов. Слово A
было бы основным подозреваемым.
(3) Наконец, я понятия не имею, как декодировать прописные и строчные буквы одновременно; как мне это сделать?
Лучший способ - создать переменную, которая указывает, что что-то написано в верхнем регистре или нет; is_uppercase
было бы хорошим именем. Затем преобразуйте символ в нижний регистр. Выполните операцию шифрования / дешифрования, а затем при необходимости преобразуйте полученный символ обратно в верхний регистр. Таким образом, ваша операция шифрования / дешифрования не подвергается никакому воздействию и остается относительно простой.