我需要解密一个使用私钥加密的文件。我有一个公钥可以用来解密这个文件。我该怎么做呢?我做了:
openssl rsautl -in file -inkey key.pem
但这并不起作用。这将错误显示为:
unable to load Private Key 3074128072:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: ANY PRIVATE KEY
dzjeubhm1#
公钥不能用于解密,只能用于加密和验证加密签名。
8ehkhllq2#
与所有人相反,事实上,您可以使用公钥进行解密,* 但是 * 前提是您的数据是使用适当的私钥加密的。至于你如何解密它,从我所看到的openssl实用程序并没有提供这个功能。看起来你必须使用一些利用OpenSSL C API(https://www.openssl.org/docs/man1.0.2/crypto/RSA_public_decrypt.html)的东西。要么直接使用C API,要么使用PHP绑定到OpenSSL之类的方法。
6kkfgxo03#
Openssl CLI可以通过rsautl子命令实现“用公钥解密”,如下所示:
rsautl
openssl rsautl -verify -inkey public_key.pem -pubin -in data.sig -raw -hexdump
**注意:**这里,“decrypt”被松散地定义为模幂运算,而使用的API实际上是-verify算法。警告:不建议使用自己的加密算法,并且误用RSA很容易创建一个损坏的安全系统。
-verify
3条答案
按热度按时间dzjeubhm1#
公钥不能用于解密,只能用于加密和验证加密签名。
8ehkhllq2#
与所有人相反,事实上,您可以使用公钥进行解密,* 但是 * 前提是您的数据是使用适当的私钥加密的。
至于你如何解密它,从我所看到的openssl实用程序并没有提供这个功能。看起来你必须使用一些利用OpenSSL C API(https://www.openssl.org/docs/man1.0.2/crypto/RSA_public_decrypt.html)的东西。
要么直接使用C API,要么使用PHP绑定到OpenSSL之类的方法。
6kkfgxo03#
Openssl CLI可以通过
rsautl
子命令实现“用公钥解密”,如下所示:**注意:**这里,“decrypt”被松散地定义为模幂运算,而使用的API实际上是
-verify
算法。警告:不建议使用自己的加密算法,并且误用RSA很容易创建一个损坏的安全系统。