Шифр Цезаря на Python

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

 

Вам также может понравиться

About the Author: Азат Ахметович

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Максимальный размер загружаемого файла: 999 МБ. Вы можете загрузить: изображение, аудио, видео, документ, таблица, интерактив, текст, архив, код, другое. Ссылки на YouTube, Facebook, Twitter и другие сервисы, вставленные в текст комментария, будут автоматически встроены. Drop files here