📘 О чем эта работа
В работе показана практическая реализация асимметричного алгоритма RSA на языке Python. Объектом является процедура генерации ключей и операций шифрования/дешифрования символов, предметом — алгоритмическая реализация и проверка корректности на примере конкретных простых чисел p=199 и q=337.
📚 Что внутри
Документ содержит подробное пошаговое описание алгоритма и исходный код программы на Python с комментариями:
- Генерация параметров: вычисление n = p × q = 66963 и функции Эйлера φ(n) = (p−1)(q−1).
- Выбор открытого показателя e (минимально возможное взаимно простое с φ) — в примере e = 5 и вычисление закрытого ключа d = 53061 методом расширенного алгоритма Евклида.
- Реализация функций: gcd(a,b) для проверки взаимной простоты, mod_inverse(e, phi) для нахождения мультипликативного обратного, encrypt_rsa и decrypt_rsa для по-символьной обработки текста.
- Пример выполнения: исходный текст 'ИНФОРМАЦИЯ', зашифрованный набор чисел [22595, 10152, 26460, 34602, 52113, 58936, 56675, 47293, 43844, 29477] и успешное восстановление исходного текста при дешифровании.
- Теоретическая часть: краткое объяснение однонаправленных функций, свойства trapdoor-функций и обоснование криптостойкости RSA (факторизация больших чисел).
- Выводы и ответы на контрольные вопросы: описание свойств однонаправленных функций, взаимно простых чисел, модульной экспоненциации и достоинств/недостатков асимметричных алгоритмов.
📊 Для кого подходит
Лабораторная работа полезна студентам математико-информатических и информационной безопасности направлений, преподавателям для демонстраций, а также начинающим программистам, изучающим криптографию: подходит для выполнения практических заданий и подготовки отчёта.
✨ Особенности
Работа содержит готовый и прокомментированный код на Python, демонстрирующий:
- практическую реализацию расширенного алгоритма Евклида для поиска d,
- использование встроенной pow(x, y, n) для эффективного модульного возведения в степень,
- пошаговую проверку взаимной простоты e и φ(n),
- конкретный числовой пример с явными значениями p, q, n, φ(n), e, d и результатами шифрования/дешифрования.
Такая конкретика ускоряет понимание механики RSA и упрощает адаптацию под другие параметры и учебные задания.
❓ Частые вопросы
Подойдет ли для моего ВУЗа?
Структура соответствует стандартным требованиям лабораторных по криптографии: цель, метод, код, результаты и выводы.
Можно адаптировать?
Да. В коде достаточно заменить p и q на другие простые числа и при необходимости расширить обработку блоков вместо символов для шифрования больших сообщений.