Здравствуйте, дорогие друзья. На нашем канале мы уже подробно разбирали шифр Цезаря, ссылка на этот материал будет в конце статьи. Но сегодня мы рассмотрим улучшенный вариант шифра Цезаря с дешифровкой, внимание на скриншот:
А теперь запустим нашу программу:
Для удобства, предоставим наш исходный код в текстовом варианте (насколько я понимаю Яндекс Дзен, увы, не передаёт табуляцию, а жаль, так что заранее приносим свои извинения за сплошной код без отступов):
from math import fabs
fille = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.,-:;!?(){}[]0123456789+=_#%№@~"
array = []
for i in range(len(fille)):
array.append(fille[i])
string = str(input("Введите текст, который хотите зашифровать \n"))
dlina = len(string)
sdvig = int(input("Введите число, которому будет равняться сдвиг при шифровании. Допустимы значения от -16 до 16 \n"))
if sdvig > 16 or sdvig < - 16:
exit(0)
def shift(string, dlina, sdvig):
new_string = ''
for i in range(dlina):
for j in range(1, len(fille)+1):
if string[i] == array[j-1]:
if j + sdvig > len(fille):
new_string += array[int(fabs(len(fille)+1 - j - sdvig))]
else:
new_string += array[j - 1 + sdvig]
break
return new_string
new_string = shift(string, dlina, sdvig)
print("Исходный текст:", string, "\nПолучившийся текст:", new_string)
string = str(input("Введите текст, который хотите дешифровать\n"))
while len(string) < 10:
string = string + "*"
for sdvig in range(-16, 17):
print("Сдвиг равен", sdvig, shift(string, 10, sdvig))
sdvig = int(input("Введите подходящий сдвиг\n"))
dlina = len(new_string)
print(shift(string, dlina, sdvig))
Итог: мы написали не только шифр Цезаря, но и дешифровку к нему. Конечно, данный вид шифра является одним из самых простых и легко раскрываемых, но и одним из самых популярных. Надеюсь статья была для вас полезной.
На этом у меня на сегодян всё. Также предлагаю подписаться на наш Ютуб-канал ПиМ [ZveKa]. До новых встреч на просторах Яндекс Дзена.
Программируем на Python: шифр Цезаря
Программируем на Python: 30-ть простых маленьких советов для начинающих
Программируем на Python: перевод из двоичной системы счисления в десятичную и наоборот