JKJS
观察:
假设RSA私钥是通过以下命令创建的:
openssl genrsa -out mykey.pem 1024
然后,在C:
中从该文件读取密钥没有问题RSA *privatekey=NULL;
privatekey=PEM_read_RSAPrivateKey(fp,NULL,NULL,NULL);
if(privatekey==NULL)
ERR_print_errors_fp(stderr);
但是,如果通过以下命令创建RSA密钥对:
openssl req -newkey rsa:1024 -sha1 -keyout mykey.pem -out rootreq.pem
然后从mykey.pem读取会导致错误。 为什么呢?
JKJS Hardik
答案 0 :(得分:1)
在第二个命令中,你给了一个密码吗?在任何编辑器中打开第二个命令创建的密钥 - 您是否在黑客中看到加密?
如果是,那么这就是你无法使用PEM_read_RSAPrivateKey
读取它的原因,因为你将第三个参数传递为NULL。
通过回调获取PEM_read_RSAPrivateKey
的调用中的密码。
或者,您可以使用以下命令从密钥中删除密码
openssl rsa -in mykey.pem -out mykey1.pem.
这会要求您提供密码 - 如果您提供正确的密码,您将在mykey1.pem