Расшифровать шифр RSA закрытым ключом в десятичном формате - PullRequest
0 голосов
/ 21 июня 2020

У меня слабый ключ RSA publi c, который я взломал. Теперь у меня есть закрытый ключ d как целое число. Я вычислил d следующим образом (python3):

phin = (p-1)*(q-1)

d = gmpy2.invert(e, phin)

, где p и q - коэффициенты для вычисления модуля N.

Как я могу использовать это для расшифровки заданного зашифрованный файл? При преобразовании d в base64 и обертывании

-----BEGIN PRIVATE KEY-----

-----END PRIVATE KEY-----

я получаю ошибку: Load key "key.txt": invalid format с помощью команды ssh-keygen -y -e -f key.txt

1 Ответ

0 голосов
/ 21 июня 2020

Когда вы заключаете значение в кодировке base64 в BEGIN PRIVATE KEY, вы сообщаете тому, кто использует это значение, что оно находится в определенном формате. Это не просто число d. У вас есть несколько форматов - если я помню, вы можете использовать PKCS # 1 https://tools.ietf.org/html/rfc3447 или PKCS # 8.

Самый простой способ отформатировать ваш PKCS 1, Например, это использовать некоторую библиотеку cryptographi c, которая позволяет вам указать ключ в XML, например, и попросить его создать значение DER или PEM в кодировке base64. Например, в C# у вас есть RSA.FromXmlString (String). Создайте XML с соответствующими значениями, включая ваш d, и попросите библиотечную функцию построить ключ RSA, а затем попросите его предоставить вам формат PEM этого ключа. Это даст вам, например, файл с BEGIN PRIVATE KEY, который вы затем можете сделать следующим шагом и использовать для расшифровки всего, что у вас есть.

...