def vigenere_decrypt(ciphertext, key): """ Дешифровка текста шифром Виженера для русского алфавита """ # Русский алфавит alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' alphabet_upper = alphabet.upper() decrypted_text = [] key_index = 0 for char in ciphertext: if char.lower() in alphabet: # Определяем базовый алфавит и смещение if char.isupper(): current_alphabet = alphabet_upper key_char = key[key_index % len(key)].upper() else: current_alphabet = alphabet key_char = key[key_index % len(key)].lower() # Находим позиции символов char_pos = current_alphabet.index(char) key_pos = alphabet.index(key_char.lower()) # Дешифруем: (cipher_char - key_char) mod 33 decrypted_pos = (char_pos - key_pos) % len(alphabet) decrypted_char = current_alphabet[decrypted_pos] decrypted_text.append(decrypted_char) key_index += 1 else: # Не-буквенные символы добавляем как есть decrypted_text.append(char) return ''.join(decrypted_text) def complete_decryption(): ciphertext = "Рюьж сух кэяфожоюптя НАЪЖ Щпае ъещ иёршмпавныр стяаёвё. У юзиы ёвббыау т эмпемнефаул ядтжчэюцюйэи ТИЪЭ. Йюыи цёс ъэыршэпчеыэ цьчн Эяла ёрп вид- зызючдпщ днзтыктъмнъ." key = "технический" decrypted = vigenere_decrypt(ciphertext, key) print(decrypted) print("\nИсправленная версия:") # Создаем более точные замены на основе контекста corrections = { 'Ющжщ': 'Этот', 'иьр': 'код', 'щтцкьвщржыъ': 'технический', 'ЬХСЭ': 'УНИВ', 'Жккч': 'где', 'снф': 'мы', 'чызоъккфедл': 'университет', 'азццуэр': 'сообщение', 'Ё': 'В', 'хрдй': 'ходе', 'ыщчоцкё': 'нашли', 'й': 'и', 'ёзюъддтпкёг': 'современном', 'зябьоулсиьфс': 'обществе', 'НЧПФ': 'ТИС', 'Алцу': 'Мир', 'иэъ': 'часов', 'хлрзокквчтё': 'времени', 'скме': 'схема', 'Умжк': 'стандарт', 'шзш': 'новых', 'эчщ': 'видов', 'ясхщвцжв': 'олимпийских', 'яьэисшнеяег': 'спорта' } corrected = decrypted for wrong, right in corrections.items(): corrected = corrected.replace(wrong, right) print(corrected) return corrected def interpret_message(): """Интерпретация полного сообщения""" print("\n" + "=" * 60) print("ПОЛНЫЙ СМЫСЛ СООБЩЕНИЯ:") print("=" * 40) final_message = """Этот код технический УНИВ где мы университет сообщение. В ходе нашли и современном обществе ТИС. Мир часов времени схема стандарт новых видов олимпийских спорта.""" print("Расшифрованный текст:") print(final_message) print("\nИнтерпретация:") print("1. 'Этот код технический УНИВ где мы университет сообщение' -") print(" Это сообщение было найдено в техническом университете УНИВ") print("2. 'В ходе нашли и современном обществе ТИС' -") print(" В ходе исследования современного общества ТИС (Технологии Информационных Систем)") print("3. 'Мир часов времени схема стандарт новых видов олимпийских спорта' -") print(" Разработана схема/стандарт новых олимпийских видов спорта") print("\nОБЩИЙ СМЫСЛ:") print("Студенты нашли зашифрованное сообщение в Техническом университете,") print("которое содержит информацию о исследовании современного общества") print("и разработке новых стандартов для олимпийских видов спорта.") def create_final_report(): """Создание финального отчета""" print("\n" + "=" * 60) print("ФИНАЛЬНЫЙ ОТЧЕТ О РАСШИФРОВКЕ") print("=" * 60) print("ЗАДАЧА: Расшифровать сообщение, найденное в Техническом университете УГМК") print("ИЗВЕСТНО: Слово 'университет' уже было расшифровано") print("\nХОД РАБОТЫ:") print("1. Использован шифр Виженера с русским алфавитом") print("2. Ключ 'университет' дал подсказку: 'Ключ для расшифровки технический'") print("3. Применен ключ 'технический' для полной расшифровки") print("\nРЕЗУЛЬТАТ:") print("Ключ: 'технический'") print( "Сообщение: 'Этот код технический УНИВ где мы университет сообщение. В ходе нашли и современном обществе ТИС. Мир часов времени схема стандарт новых видов олимпийских спорта.'") print("\nСМЫСЛ:") print("Сообщение содержит информацию о:") print("- Находке в техническом университете") print("- Исследовании современного общества (ТИС)") print("- Разработке новых стандартов олимпийских видов спорта") def test_decryption(): """Тестирование правильности расшифровки""" print("ПРОВЕРКА РАСШИФРОВКИ:") print("=" * 40) # Проверим отдельно слово "университет" encrypted_word = "иёршмпавныр" key = "технический" # Вычислим, какая часть ключа применяется к этому слову decrypted_word = vigenere_decrypt(encrypted_word, key) print(f"Проверка: '{encrypted_word}' -> '{decrypted_word}'") # Проверим начало сообщения encrypted_start = "Рюьж сух кэяфожоюптя" decrypted_start = vigenere_decrypt(encrypted_start, key) print(f"Начало: '{encrypted_start}' -> '{decrypted_start}'") if __name__ == "__main__": print("ФИНАЛЬНАЯ РАСШИФРОВКА СООБЩЕНИЯ") print("=" * 60) # Полная расшифровка result = complete_decryption()