Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР1 / LR1_process_crypt_key

.py
Скачиваний:
3
Добавлен:
18.06.2024
Размер:
6.29 Кб
Скачать
import random

def process_text(text):
# Приводим текст к верхнему регистру
text = text.upper()

# Заменяем Ё, Й, Ъ на Е, И, Ь соответственно
text = text.replace('Ё', 'Е').replace('Й', 'И').replace('Ъ', 'Ь')

# Оставляем только буквы русского алфавита
russian_alphabet = 'АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЭЮЯ'
text = ''.join(char for char in text if char in russian_alphabet)

return text

def generate_encryption_key():
# Стандартный порядок букв русского алфавита
standard_alphabet = 'абвгдежзиклмнопрстуфхцчшщыьэюя'
# Создаем список из букв русского алфавита
alphabet_list = list(standard_alphabet)
# Перемешиваем список
random.shuffle(alphabet_list)
# Формируем ключ шифрования из перемешанного списка
encryption_key = ''.join(alphabet_list)
return encryption_key

def encrypt_text(text, encryption_key):
encrypted_text = ''
# Создаем словарь для замены символов
encryption_dict = dict(zip('абвгдежзиклмнопрстуфхцчшщыьэюя', encryption_key))
# Заменяем символы в тексте согласно ключу шифрования
for char in text:
encrypted_text += encryption_dict.get(char.lower(), char)
return encrypted_text.lower()

def decrypt_text(encrypted_text, encryption_key):
decrypted_text = ''
# Создаем словарь для обратной замены символов
decryption_dict = dict(zip(encryption_key, 'АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЫЬЭЮЯ'))
# Заменяем символы в зашифрованном тексте обратно согласно ключу шифрования
for char in encrypted_text:
decrypted_text += decryption_dict.get(char, char)
return decrypted_text

original_text = """
ЕСЛИ ВАМ НА САМОМ ДЕЛЕ ХОЧЕТСЯ УСЛЫШАТЬ ЭТУ ИСТОРИЮ, ВЫ, НАВЕРНО, ПРЕЖДЕ ВСЕГО ЗАХОТИТЕ УЗНАТЬ, ГДЕ Я РОДИЛСЯ, КАК ПРОВЕЛ СВОЕ ДУРАЦКОЕ ДЕТСТВО, ЧТО ДЕЛАЛИ МОИ РОДИТЕЛИ ДО МОЕГО РОЖДЕНИЯ, — СЛОВОМ, ВСЮ ЭТУ ДАВИД-КОППЕРФИЛДОВСКУЮ МУТЬ. НО, ПО ПРАВДЕ ГОВОРЯ, МНЕ НЕОХОТА В ЭТОМ КОПАТЬСЯ. ВО-ПЕРВЫХ, СКУЧНО, А ВО-ВТОРЫХ, У МОИХ ПРЕДКОВ, НАВЕРНО, СЛУЧИЛОСЬ БЫ ПО ДВА ИНФАРКТА НА БРАТА, ЕСЛИ Б Я СТАЛ БОЛТАТЬ ПРО ИХ ЛИЧНЫЕ ДЕЛА. ОНИ ЭТОГО ТЕРПЕТЬ НЕ МОГУТ, ОСОБЕННО ОТЕЦ. ВООБЩЕ-ТО ОНИ ЛЮДИ СЛАВНЫЕ, Я НИЧЕГО НЕ ГОВОРЮ, НО ОБИДЧИВЫЕ ДО ЧЕРТИКОВ. ДА Я И НЕ СОБИРАЮСЬ РАССКАЗЫВАТЬ СВОЮ АВТОБИОГРАФИЮ И ВСЯКУЮ ТАКУЮ ЧУШЬ, ПРОСТО РАССКАЖУ ТУ СУМАСШЕДШУЮ ИСТОРИЮ, КОТОРАЯ СЛУЧИЛАСЬ ПРОШЛЫМ РОЖДЕСТВОМ. А ПОТОМ Я ЧУТЬ НЕ ОТДАЛ КОНЦЫ, И МЕНЯ ОТПРАВИЛИ СЮДА ОТДЫХАТЬ И ЛЕЧИТЬСЯ. Я И ЕМУ — Д.Б. — ТОЛЬКО ПРО ЭТО И РАССКАЗЫВАЛ, А ВЕДЬ ОН МНЕ КАК-НИКАК РОДНОЙ БРАТ. ОН ЖИВЕТ В ГОЛЛИВУДЕ. ЭТО НЕ ОЧЕНЬ ДАЛЕКО ОТСЮДА, ОТ ЭТОГО ТРЕКЛЯТОГО САНАТОРИЯ, ОН ЧАСТО КО МНЕ ЕЗДИТ, ПОЧТИ КАЖДУЮ НЕДЕЛЮ. И ДОМОЙ ОН МЕНЯ САМ ОТВЕЗЕТ — МОЖЕТ БЫТЬ, ДАЖЕ В БУДУЩЕМ МЕСЯЦЕ. КУПИЛ СЕБЕ НЕДАВНО «ЯГУАР». АНГЛИЙСКАЯ ШТУЧКА, МОЖЕТ ДЕЛАТЬ ДВЕСТИ МИЛЬ В ЧАС. ВЫЛОЖИЛ ЗА НЕЕ ЧУТЬ ЛИ НЕ ЧЕТЫРЕ ТЫСЯЧИ. ДЕНЕГ У НЕГО ТЕПЕРЬ КУЧА. НЕ ТО ЧТО РАНЬШЕ. РАНЬШЕ, КОГДА ОН ЖИЛ ДОМА, ОН БЫЛ НАСТОЯЩИМ ПИСАТЕЛЕМ. МОЖЕТ, СЛЫХАЛИ — ЭТО ОН НАПИСАЛ МИРОВУЮ КНИЖКУ РАССКАЗОВ «СПРЯТАННАЯ РЫБКА». САМЫЙ ЛУЧШИЙ РАССКАЗ ТАК И НАЗЫВАЛСЯ — «СПРЯТАННАЯ РЫБКА», ТАМ ПРО ОДНОГО МАЛЬЧИШКУ, КОТОРЫЙ НИКОМУ НЕ ПОЗВОЛЯЛ СМОТРЕТЬ НА СВОЮ ЗОЛОТУЮ РЫБКУ, ПОТОМУ ЧТО КУПИЛ ЕЕ НА СОБСТВЕННЫЕ ДЕНЬГИ. С УМА СОЙТИ, КАКОЙ РАССКАЗ! А ТЕПЕРЬ МОЙ БРАТ В ГОЛЛИВУДЕ, СОВСЕМ СКУРВИЛСЯ. ЕСЛИ Я ЧТО НЕНАВИЖУ, ТАК ЭТО КИНО. ТЕРПЕТЬ НЕ МОГУ.
"""

# Генерируем ключ шифрования
# encryption_key = generate_encryption_key()

encryption_key = "ичэфубснлквюышрмжьпдаоцщхягзет"

processed_text = process_text(original_text)
encrypted_text = encrypt_text(processed_text, encryption_key)
decrypted_text = decrypt_text(encrypted_text, encryption_key)

print("\nОбработанный текст:", processed_text)
print("\nЗашифрованный текст:", encrypted_text)
print("\nКлюч шифрования:", encryption_key)
print("\nРасшифрованный текст:", decrypted_text)

# Проверяем соответствие расшифрованного текста оригинальному тексту с учетом регистра
if decrypted_text == processed_text:
print("\nШифрование и расшифрование прошли успешно. Тексты совпадают.")
else:
print("\nОшибка: расшифрованный текст не совпадает с оригинальным текстом.")
Соседние файлы в папке ЛР1