
В этой статье приведен максимально простой код на Python для реализации шифра Цезаря. Этот урок поможет вам написать реально работающую программу, которая сможет зашифровывать текстовые сообщения с помощью шифра Цезаря.
Что такое шифр Цезаря
Шифр Цезаря — это реально существовавший шифр, с помощью которого Цезарь зашифровывал послания своим военноначальникам. Зашифрованные подобным образом послания в случае перехвата не могли быть прочитаны врагами Цезаря.
Смысл шифра Цезаря очень прост. Для того что бы зашифровать любое слово нужно каждую букву заменить на следующую за ней в алфавите. Так сказать сдвинуть на единицу направо в алфавите. Таким образом А превращается в Б, Б превращается в В и так далее. Можно сдвигать не на 1, а на пример на 2. В этом случае А станет В и т.д. О сдвиге договариваются заранее.
Как написать на Python программу для шифра Цезаря
Шифр Цезаря на Python реализуется очень легко и наглядно. Все благодаря тому, что строки в Python это итерируемый тип, т.е. с ними можно работать почти так же как со списками. Мы можем получить индекс символа в строке, мы можем получить символ по индексу. Это мы и используем при написании программы.
Объяснение алгоритма шифра Цезаря:
Вот таким псевдокодом можно описать наш алгоритм
- создадим строку с алфавитом «абвгд…я»
- получим послание которое нужно закодировать. Например «атакуем на рассвете»
- введем сдвиг. Например 2.
- Для каждого символа из послания:
- найдем его позицию в алфавите
- сдвинем позицию на 2 вправо
- найдем символ по этой позиции
Тут возникнет один нюанс. При сдвиге символа Я на 2 позиции мы должны получить символ Б. Т.е. наш алфавит расположен не как лента, а как круг. После Я идет снова А.
Программа на Python для шифра Цезаря
abc = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя" shift = 2 n = len(abc) message = input("Введите слово: ") result = "" for symbol in message: ind = abc.index(symbol) ind_2 = ind+shift if ind_2>n: ind_2=ind_2-n symbol_2 = abc[ind_2] result = result + symbol_2 print("Результат: ",result)