В этой статье приведен максимально простой код на 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)

