Меню Закрыть

#программа дешифровки шифра Цезаря на английском и русском языках#
#ключ (сдвиг) неизвестен ————#
# 1. подбирается по известным открытым словам
# 2. подбирается прямым перебором
#———————-cyberbugz.ru——————————#
#—————————————————————-#
import os
import sys
#объявление переменнх
#
dictionary = «ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцшщъыьэюя0123456789!?., » #алфавит
l_d = len(dictionary) #длина алфавита
spisok=[«Ярик», «Привет», «Пока», «Цезарь», «QWERTY», «Здравств», «Шифр», «password», «свидани», «пароль», «криптограф», «world», «hello»]
#
#ТЕЛО ПРОГРАММЫ—————————————————————
#print(l_d)
yes_no = 2
s_input = input(«Введите сообщение: «) #сообщение для шифра
n_end = 100 #конечный сдвиг
n_page = 10 #ывод на страницу
n_break = 1
n_find = 0
#==============================#
# пробуем подключить интеллект #
#==============================#
for i in range(n_end):
shift = -(i + 1)
s_output = «»
#——перекодируем строку———————————————-
for i in s_input: #цикл по строке(которую ввели с экрана)
i_input = dictionary.find(i) #находим позицию символа в строке
i_cipher = i_input + shift #позицию сдвигаем
if i in dictionary: #есть ли символ в строке, если есть, то потом добавим его в выходную строку
if i_cipher >= l_d:
i_cipher = i_cipher — l_d #позицию нового символа сдвигаем на начало
s_output = s_output + dictionary[i_cipher] #добавляем символ в выходную строку
#——проверяем наличие заданных слов в строке——————————————
for word in spisok:
s_output_low=s_output.lower() # исключаем проверку во всех регистрах (перевод в нижний регистр)
word_low=word.lower() # нижний регистр
if s_output_low.find(word_low)>=0: # find — если есть подстрока
print(«Вероятно, сдвиг (ключ):», -shift)
print(«Ключ:», — shift,» «, s_output)
n_find =1 # нашли ответ
n_break = 2 # завершим цикл
break
if n_break == 2:
break #
#==================================================================
if n_find==1:
print(«Пока!»)
sys.exit(1) # просто завершаем работу и все
#—————-> конец программы
#=============================#
#пробуем перебор #
#=============================#
print(«Отмысленных фраз не найдено!»)
print(«Пробуем прямой перебор!»)
for i in range(n_end):
shift = -(i + 1)
s_output = «»
#———————————————————————-
for i in s_input: #цикл по строке(которую ввели с экрана)
i_input = dictionary.find(i) #находим позицию символа в строке
i_cipher = i_input + shift #позицию сдвигаем
if i in dictionary: #есть ли символ в строке, если есть, то потом добавим его в выходную строку
if i_cipher >= l_d:
i_cipher = i_cipher — l_d #позицию нового символа сдвигаем на начало
s_output = s_output + dictionary[i_cipher] #добавляем символ в выходную строку
#———————————————————————-
print(«Сдвиг:», — shift,» «, s_output)
if -shift%n_page==0: #деление по модулю 2 — определяем остаток(100/10 — 0)
n_break=int(input(«Продолжить — 1 или закончить — 2?»))
if n_break == 2:
break
#==================================================================
print(«Пока!»)

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

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

error: Контент защещён!