Найти тему

Шифруем и дешифруем текст с помощью шифра Цезаря

Здравствуйте, дорогие друзья. На нашем канале мы уже подробно разбирали шифр Цезаря, ссылка на этот материал будет в конце статьи. Но сегодня мы рассмотрим улучшенный вариант шифра Цезаря с дешифровкой, внимание на скриншот:

Улучшенный вариант шифра Цезаря с дешифровкой
Улучшенный вариант шифра Цезаря с дешифровкой

А теперь запустим нашу программу:

Шифруем текст
Шифруем текст
Дешифруем текст
Дешифруем текст

Для удобства, предоставим наш исходный код в текстовом варианте (насколько я понимаю Яндекс Дзен, увы, не передаёт табуляцию, а жаль, так что заранее приносим свои извинения за сплошной код без отступов):

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: перевод из двоичной системы счисления в десятичную и наоборот