将.PEM文件中的RSA密钥读取到C中的RSA结构

时间:2012-12-01 12:49:30

标签: c openssl rsa pem

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

1 个答案:

答案 0 :(得分:1)

在第二个命令中,你给了一个密码吗?在任何编辑器中打开第二个命令创建的密钥 - 您是否在黑客中看到加密?

如果是,那么这就是你无法使用PEM_read_RSAPrivateKey读取它的原因,因为你将第三个参数传递为NULL。

通过回调获取PEM_read_RSAPrivateKey的调用中的密码。

或者,您可以使用以下命令从密钥中删除密码

openssl rsa -in mykey.pem -out mykey1.pem.

这会要求您提供密码 - 如果您提供正确的密码,您将在mykey1.pem

中以未加密的形式获取密钥