1

Я зашифровал файл с помощью симметричного ключа с помощью командной строки openssl , а затем зашифровал этот симметричный ключ с помощью открытого ключа RSA. Я немного поэкспериментировал с шифрованием и дешифрованием, а затем случайно зашифровал симметричный ключ своим закрытым ключом RSA. Шифрование продолжалось без ошибок.

Так что теперь я не могу расшифровать симметричный ключ, чтобы добраться до моего файла. Есть ли какая-нибудь команда openssl которая расшифровывает с помощью открытого ключа?


Командная строка, которую я использовал для шифрования:

openssl rsautl -encrypt -inkey private_key.pem -in symmKey.key -out symmKey.enc

и для расшифровки я попытался использовать:

openssl rsautl -decrypt -inkey public_key.pem -pubin -in symmKey.enc -out symmKey.key

Я также попытался проверить symmKey.enc с:

openssl rsautl -verify -inkey public_key.pem -pubin -in symmKey.enc -out symmKey.key

но тогда я получаю следующую ошибку:

RSA operation error
    5968:error:0407008A:rsa routines:RSA_padding_check_PKCS1_type_1:invalid padding:crypto\rsa\rsa_pk1.c:67:
    5968:error:04067072:rsa routines:rsa_ossl_public_decrypt:padding check failed:crypto\rsa\rsa_ossl.c:586:`

1 ответ1

0

Вы на самом деле не зашифровали с закрытым ключом вообще. Кодировка закрытого ключа содержит как компоненты, необходимые для закрытого, так и открытого ключа. Командная строка OpenSSL достаточно умна, чтобы выбирать компоненты открытого ключа в закодированном секретном ключе при шифровании.

Таким образом, вы можете просто расшифровать, используя закрытый ключ:

openssl rsautl -decrypt -inkey private_key.pem -in symmKey.enc -out symmKey.key

Обратите внимание, что модуль уже присутствует в закрытом ключе. Открытый ключ состоит из модуля и открытого показателя степени, который обычно устанавливается на пятое простое число Ферма: F4 со значением 0x010001 (65537). Поэтому его легко хранить в закрытом ключе, хотя бы для удобства.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .