RSA-калькулятор - шифрование с открытым ключом
Генерируйте пары ключей RSA, шифруйте и расшифровывайте числовые сообщения — интерактивный инструмент для изучения криптографии с открытым ключом и теории чисел.
Введите два различных простых числа (p и q), открытый показатель (e) и, при необходимости, число открытого текста, чтобы зашифровать и расшифровать его алгоритмом RSA.
RSA-калькулятор - шифрование с открытым ключом
Генерируйте пары ключей RSA, шифруйте и расшифровывайте числовые сообщения — интерактивный инструмент для изучения криптографии с открытым ключом и теории чисел.
О RSA-калькуляторе
RSA (Rivest–Shamir–Adleman) — самая широко применяемая в мире криптосистема с открытым ключом. На ней основаны HTTPS, шифрование электронной почты, цифровые подписи и безопасная доставка программного обеспечения. Чтобы понять RSA, нужно разбираться в трех понятиях теории чисел: разложении на простые множители, модульной арифметике и функции Эйлера; этот калькулятор делает их интерактивными и наглядными.
Генерация ключей RSA начинается с выбора двух различных больших простых чисел p и q. В учебных целях этот инструмент работает с малыми простыми числами, но реальные реализации RSA используют простые числа с тысячами цифр. Модуль n вычисляется как n = p × q. Затем рассчитывается функция Эйлера φ(n) = (p − 1)(q − 1). Открытый показатель e должен выбираться так, чтобы 1 < e < φ(n) и gcd(e, φ(n)) = 1; самые распространенные варианты — 3, 17 и 65,537 (простые числа Ферма), причем 65,537 используется практически во всех производственных системах. Закрытый показатель d — это мультипликативный обратный элемент к e по модулю φ(n), найденный расширенным алгоритмом Евклида: d ≡ e⁻¹ (mod φ(n)).
Шифрование выполняется открытым ключом (e, n): шифртекст C = Mᵉ mod n, где M — целое число открытого текста. Для расшифрования используется закрытый ключ (d, n): открытый текст M = Cᵈ mod n. Безопасность RSA основана на практической невозможности разложить большое n на его простые компоненты p и q — задаче, для которой неизвестен классический алгоритм полиномиального времени.
Этот RSA-калькулятор предназначен для обучения, а не для защиты в реальных системах. Он использует JavaScript BigInt для точной целочисленной арифметики, поэтому результаты математически корректны для любых простых входных чисел, которые способен обработать браузер. Однако реальные защищенные системы требуют простых чисел длиной не менее 2 048 бит, корректных схем дополнения (OAEP) и криптографических генераторов случайных чисел; этот учебный инструмент ничего из этого не предоставляет.
Типичные сценарии использования калькулятора: задания по информатике, связанные с криптографией и теорией чисел; проверка ручных вычислений при генерации ключей RSA; изучение того, как небольшие изменения e или выбор p и q влияют на закрытый ключ d; а также формирование интуиции о том, почему факторизация n является сложной задачей в основе безопасности RSA.
Чтобы воспользоваться калькулятором, введите любые два различных простых числа для p и q, выберите открытый показатель e, взаимно простой с φ(n), при желании введите числовое сообщение меньше n и нажмите «Сгенерировать». Инструмент сразу покажет n, φ(n), d, а также зашифрованные и расшифрованные значения, чтобы вы могли убедиться, что расшифрование восстанавливает исходное сообщение.
Примеры RSA-калькулятора
Три разобранных примера генерации ключей и шифрования сообщений с малыми простыми числами.
| Входные данные (p, q, e, M) | Ключевые результаты | Примечания |
|---|---|---|
| p=61, q=53, e=17, M=65 | n=3233, φ=3120, d=2753, C=2790, M′=65 | Классический пример из учебника. n=3233, φ(n)=3120. d=17⁻¹ mod 3120 = 2753. Зашифровать 65: 65¹⁷ mod 3233 = 2790. Расшифровать: 2790²⁷⁵³ mod 3233 = 65 ✓ |
| p=7, q=11, e=13, M=5 | n=77, φ=60, d=37, C=26, M′=5 | Малые простые числа для проверки вручную. φ(77)=60, gcd(13,60)=1 ✓. d=13⁻¹ mod 60=37. Зашифровать 5: 5¹³ mod 77=26. Расшифровать 26³⁷ mod 77=5 ✓ |
| p=17, q=19, e=5, M=88 | n=323, φ=288, d=173, C=200, M′=88 | Пример среднего размера. φ(323)=288, gcd(5,288)=1 ✓. d=5⁻¹ mod 288=173. Зашифровать 88: 88⁵ mod 323=200. Расшифровать 200¹⁷³ mod 323=88 ✓ |
Как пользоваться RSA-калькулятором
- Введите два различных простых числа в поля «Простое p» и «Простое q». Начните с известных малых простых чисел, например 61 и 53, чтобы проверить классический пример.
- Введите открытый показатель e, который больше 1, меньше φ(n) = (p−1)(q−1) и взаимно прост с φ(n). Распространенные варианты: 3, 17 или 65537.
- При необходимости введите в поле сообщения числовой открытый текст M, меньший n (p × q).
- Нажмите «Сгенерировать ключи и зашифровать». Калькулятор покажет модуль n, функцию Эйлера φ(n), закрытый ключ d и, если вы ввели сообщение, шифртекст C и расшифрованное M′.
- Убедитесь, что расшифрованное значение M′ совпадает с исходным сообщением M: это подтверждает, что полный цикл RSA работает правильно.
FAQ по RSA-калькулятору
Что такое p, q, n, e и d в RSA?
p и q — два различных простых числа, которые вы выбираете. n = p × q — открытый модуль. e — открытый показатель, публикуемый вместе с ключом. d — закрытый показатель, который держится в секрете. Пара (e, n) является открытым ключом; (d, n) — закрытым ключом. Любой может зашифровать сообщение с помощью (e, n), но расшифровать его может только владелец d.
Почему e должно быть взаимно простым с φ(n)?
Закрытый ключ d — это модульный обратный элемент к e по модулю φ(n). Модульный обратный элемент существует только когда gcd(e, φ(n)) = 1, то есть когда у них нет общих множителей. Если бы e имело общий множитель с φ(n), допустимого d не существовало бы, и генерация ключей RSA завершилась бы неудачей.
Почему сообщение M должно быть меньше n?
Шифрование RSA — это Mᵉ mod n. Если M ≥ n, модульное сокращение потеряет информацию: два разных сообщения могут дать один и тот же шифртекст, что сделает расшифрование неоднозначным. На практике реальные реализации RSA дополняют сообщения с помощью OAEP, чтобы это ограничение всегда выполнялось.
Безопасен ли этот RSA-калькулятор для реального использования?
Нет. Этот инструмент предназначен только для обучения. Промышленный RSA требует простых чисел не менее 2 048 бит (примерно 617 десятичных цифр), криптографически безопасной случайной генерации простых чисел и схем дополнения вроде OAEP. Малые простые числа тривиально факторизуются и никогда не должны использоваться для защиты реальных данных.
Что такое функция Эйлера φ(n)?
Функция Эйлера φ(n) считает, сколько целых чисел от 1 до n взаимно просты с n. Для n = p × q, где p и q — различные простые числа, φ(n) = (p − 1)(q − 1). Это значение играет ключевую роль в RSA, потому что задает группу, в которой выполняется соотношение ключей d ≡ e⁻¹ (mod φ(n)).
Как расшифрование RSA доказывает, что закрытый ключ работает?
По теореме Эйлера для любого M, взаимно простого с n, выполняется M^φ(n) ≡ 1 (mod n). Поскольку e × d ≡ 1 (mod φ(n)), получаем (Mᵉ)ᵈ = M^(ed) = M^(1 + k·φ(n)) = M × (M^φ(n))^k ≡ M × 1^k = M (mod n). Поэтому расшифрование всегда восстанавливает исходное сообщение, если M < n.