Шифр Цезаря

Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, A была бы заменена на D, B станет E, и так далее.

Для кодирования одного символа используется формула:

\[encoded\_symbol = first + (symbol - first + key) \bmod (last - first + 1)\]

Здесь:

  • encoded_symbol — код зашифрованного символа

  • symbol — код исходного символа

  • key — ключ шифрования

  • first — код первого символа алфавита

  • last — код последнего символа алфавита.

Для преобразования символа в код и обратно используются функции:

ord(c)

Возвращает код символа с.

chr(i)

Возвращает символ, соответствующий коду i.

Задание

Каждая задача — отдельный этап реализации приложения для шифрования.

  1. Реализуйте функцию encode_symbol. Функция принимает символ и число, на которое его нужно сдвинуть. Функция шифрует только символы латинского алфавита, все прочие оставляет без изменений.

  2. Реализуйте функцию encode_str. Функция принимает строку и ключ шифрования и возвращает зашифрованную строку.

  3. Реализуйте функцию encode_file(input_file_path, output_file_path, key).

  4. Реализуйте для приложения графический интерфейс с помощью easygui. Для открытия шифруемого файла используйте функцию easygui.fileopenbox(msg=None, title=None). Для сохранения зашифрованного файла используйте easygui.filesavebox(msg=None, title=None). Для ввода ключа — easygui.integerbox(msg="", title=" ").