alphabet = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя" alfabet1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ' def poyasnenie(): print("Давай я немного расскажу про шифры \n" "Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, \n " "находящимся на некотором постоянном числе позиций левее или правее него в алфавите. \n" "Шифр Виженера — метод полиалфавитного шифрования буквенного текста с использованием ключевого слова. \n" "Атбаш — простой шифр подстановки для алфавитного письма. \n" "Правило шифрования состоит в замене n-й буквы алфавита буквой с номером m - n + 1, где m — число букв в алфавите.\n") def caesar_encrypt(text): key = int(input('Введите ключ шифрования --> ')) result = "" for i in text: mesto = alfabet1.find(i) new_mesto = mesto + key if i in alfabet1: result += alfabet1[new_mesto] else: result += i return result def caesar_decrypt(text): key = int(input('Введите ключ дешифрования --> ')) result = "" for i in text: mesto = alfabet1.find(i) new_mesto = mesto - key if i in alfabet1: result += alfabet1[new_mesto] else: result += i return result def vigenere_encrypt(text): key = input("Введите ключ шифрования --> ") result = [] space = 0 for index, symbol in enumerate(text): if symbol != " ": index_1 = alphabet.index(symbol) index_2 = alphabet.index(key[(index - space) % len(key)]) index_result = (index_1 + index_2) % len(alphabet) result.append(alphabet[index_result]) else: space += 1 result.append(" ") return "".join(result) def vigenere_decrypt(text): key = input("Введите ключ дешифрования --> ") result = [] space = 0 for index, symbol in enumerate(text): if symbol != " ": index_1 = alphabet.index(symbol) index_2 = alphabet.index(key[(index - space) % len(key)]) index_result = (index_1 - index_2) % len(alphabet) result.append(alphabet[index_result]) else: space += 1 result.append(" ") return "".join(result) def atbash(text): return text.translate(str.maketrans( alphabet + alphabet.upper(), alphabet[::-1] + alphabet.upper()[::-1])) print("Приветствую, ты попал в программу для криптографии, а точнее, для шифрования/дешифрования текста \n" "Надеюсь, она будет тебе удобна и внешне приятна, я старался с: \n" "Начинаем! \n") poyasnenie() print("Выберите способ шифрования:") cipher = input("Шифр Цезаря, Виженера, Атбаш --> ").lower() action = input("Вы собираетесь шифровать[Ш] или дешифровать[Д] сообщение --> ").lower() text = input("Введите текст для шифрования/дешифрования --> ").lower().upper() #МУАХАХАХАХАХ РАЗДВОЕНИЕ ЛИЧНОСТИ ХУЛИ if cipher not in ["цезаря", "цезарь", "виженера", "виженер", "атбаш"]: print("Неизвестный шифр") elif action not in ["ш", "д"]: print("Неизвестное действие") else: if cipher == "цезаря" or cipher == "цезарь": print("(Не забываем что ключ в шифре Цезаря - цифры)") if action == "ш": result = caesar_encrypt(text) else: result = caesar_decrypt(text) elif cipher == "виженера" or cipher == "виженер": print("(Не забываем что в шифре Виженера в виде ключа выступает слово)") if action == "ш": result = vigenere_encrypt(text) else: result = vigenere_decrypt(text) elif cipher == "атбаш": result = atbash(text) print(f"Result: {result}")