Расшифровка RSA с использованием китайской теоремы об остатках (CRT)
Расшифровка RSA с использованием китайской теоремы об остатках (CRT)

Резюме ИИ:В этой статье объясняется, как использовать китайскую теорему об остатках.(CRT)эффективно выполнятьRSAРасшифровать。первый,Обзор основных принципов шифрования RSA,Включая генерацию пары ключей и процесс дешифрования шифрования. затем,Подробно объясняется концепция китайской теоремы об остатках и ее применение в расшифровке RSA., включая часть открытого текста, вычислить модуль $p$и модуль $q$, решая $q$модель$p$Обратный element$q_{\text{inv}}$ и как объединить эти результаты, чтобы получить окончательный открытый текст $m$. В статье также представлена ​​полная Реализация Python, показывает, как Рассчитать модуль$n$, использование обратной функции, вычислить инверсию, использование быстрого мощного алгоритма, вычислить частичный открытый текст, и как объединить результаты, получить открытый текст。проходитьCRT,Процесс расшифровки RSA становится более эффективным при вычислении,Потому что это позволяет вычислить на меньших модельных номерах.

Расшифровка RSA с использованием китайской теоремы об остатках (CRT)

В шифровании RSA, если мы знаем факторы закрытого ключа p q dp dq и зашифрованный текст c , можно эффективно расшифровать с помощью китайской теоремы об остатках (CRT). В этой статье подробно объясняются принципы CRT и представлена ​​полная реализация Python.

  1. Основные принципы расшифровки RSA-шифрования
  2. Создайте пару ключей: выберите два больших простых числа. p и q . вычислить n = p \times q . вычислить \phi(n) = (p-1) \times (q-1) . Выберите целое число e делать 1 < e < \phi(n) $``$ e и \phi(n) Относительно премьер. вычислить d делать e \times d \equiv 1 \pmod{\phi(n)} ,Прямо сейчас d да e В плесени \phi(n) Обратный элемент ниже.
  3. шифрование: Открытый ключ задается (e, n) композиция. Закрытый ключ состоит из (d, n) композиция. новости шифрования m гипотеза m < n $``$ c = m^e \mod n получить зашифрованный текст c
  4. Расшифровать: Расшифровать зашифрованный текст. c Использовать формулу m = c^d \mod n получить открытый текст m
  1. Обзор китайской теоремы об остатках (CRT)

Китайская теорема об остатках — это метод решения систем конгруэнтных уравнений, когда модули не являются взаимно простыми. В частности, если у нас есть два относительно простых целых числа p и q и два уравнения сравнения:

$$ \begin{cases} x \equiv a \pmod{p} \ x \equiv b \pmod{q} \end{cases} $$

Согласно китайской теореме об остатках, эти две системы уравнений имеют единственное решение. x В плесени pq значение.

  1. Применение в расшифровке RSA

В RSA у нас есть следующие известные параметры:

  • два больших простых числа p и q
  • модуль открытого ключа n = p \times q
  • индекс закрытого ключа d
  • dp = d \mod (p-1) и dq = d \mod (q-1)
  • зашифрованный текст c

Наша цель — расшифровать зашифрованный текст c , получить простой текст m

Подробные шаги

m_p = c^{dp} \mod p

рассчитать:

m_q = c^{dq} \mod q
  1. Обратный элемент удовлетворяет:
q \times q_{\text{inv}} \equiv 1 \pmod{p}

Его можно рассчитать с помощью расширенного алгоритма Евклида.

h = (q_{\text{inv}} \times (m_p - m_q)) \mod p

Вычислите окончательный открытый текст:

m = m_q + h \times q \mod n
  1. Реализация Python

Ниже приведен полный код Python с подробными комментариями:

Язык кода:javascript
копировать
from Crypto.Util.number import inverse, long_to_bytes

p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852

n = p*q
phi_n = (p - 1) * (q - 1)
q_inv = inverse(q, p)  # вычислить q форма p Обратный элемент
m1 = pow(c, dp, p)  # вычислить c^dp mod p
m2 = pow(c, dq, q)  # вычислить c^dq mod q
h = (q_inv * (m1 - m2)) % p  # вычислить h
m = (m2 + h * q) % n  # Объединить результатыполучить открытый текст m
print(long_to_bytes(m))

объяснить код

  • Рассчитать модуль n = p \times q
  • использоватьinverseфункциявычислить q модель p Обратный элемент q_{\text{inv}}
  • использовать快速幂алгоритм(powфункция)вычислить m_p и m_q
  • вычислить h , который является поправочным коэффициентом между двумя частичными результатами.
  • Наконец-то вычислить вышел с открытым текстом m , объединяя два частичных результата.

таким образом,Процесс расшифровки RSA становится более эффективным,Потому что плесени небольшое количество( p и q ) под вычислить, чем непосредственно В плесени n Расчет происходит гораздо быстрее. Китайская теорема об остатках делает эту оптимизацию возможной.

Авторские права принадлежат: Хитоми тоже

Ссылка на эту статью:https://cloud.tencent.com/developer/article/2427653

Все статьи на этом сайте, которые не воспроизводятся, являются оригинальными и заимствованы. CC BY-NC-SA 4.0 Авторизационный договор, при перепечатке указывайте источник, спасибо!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose