我使用命令行用对称密钥加密了一个文件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
实际上你根本没有用私钥加密。私钥的编码包含私钥所需的两个组件和公钥OpenSSL 命令行非常智能,能够选择编码的私钥加密时。
因此您可以简单地使用私钥解密:
openssl rsautl -decrypt -inkey private_key.pem -in symmKey.enc -out symmKey.key
注意,模数已经存在于私钥中。公钥由模数和公共指数组成,公共指数通常设置为费马大数的第五个素数:F4,值为 0x010001(65537)。因此,如果只是为了方便,很容易将其存储在私钥中。