Обложка канала

Репетитор IT mentor

2776 @mentor_it

Заметки репетитор по физике, математике, программированию. Разбор интересных задач, типичных ошибок и способов их решения.

Репетитор IT mentor

3 года назад
Открыть в
Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования. Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее. Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами. Шаг шифрования, выполняемый шифром Цезаря, часто включается как часть более сложных схем, таких как шифр Виженера, и всё ещё имеет современное приложение в системе ROT13. Как и все моноалфавитные шифры, шифр Цезаря легко взламывается и не имеет почти никакого применения на практике. Теперь немного о реализации. Да, код получается игрушечным, но вполне годится для самой первой программы для начинающего криптографа 😉 📝 Математическая модель Если сопоставить каждому символу алфавита его порядковый номер (нумеруя с 0), то шифрование и дешифрование можно выразить формулами модульной арифметики:
y = (x + k) mod n
x = (y - k) mod n
где x — символ открытого текста, y — символ шифрованного текста, n — мощность алфавита, а k — ключ. С точки зрения математики шифр Цезаря является частным случаем аффинного шифра. Шифрование с использованием ключа k = 3. Буква «Е» «сдвигается» на три буквы вперёд и становится буквой «З». Твёрдый знак, перемещённый на три буквы вперёд, становится буквой «Э», буква «Я», перемещённая на три буквы вперёд, становится буквой «В», и так далее: Исходный алфавит:
А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Шифрованный: Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я А Б В Решил быстро набросать возможную реализацию расшифровки на языке Python. Запуск в онлайн-компиляторе: ⚙️ https://onlinegdb.com/vRtlpnv7s 📄 https://pastebin.com/J4jVbLfW