我正在尝试像这样读取使用 openssl 生成的 RSA 公钥:
Private Key:
openssl genrsa -out mykey.pem 1024
Public Key afterwards:
openssl rsa -in mykey.pem -pubout > somewhere.pub
然后我尝试阅读:
FILE *keyfile = fopen("somewhere.pub", "r");
RSA *rsa_pub = PEM_read_RSAPublicKey(keyfile, NULL, NULL, NULL);
//rsa_pub == NULL!
当我读取私钥时它有效
FILE *keyfile = fopen("mykey.pem", "r");
RSA *rsa_pri = PEM_read_RSAPrivateKey(keyfile, NULL, NULL, NULL);
//all good
有什么想法吗?
我读到 openssl 生成 RSA 公钥的 X509 key 。但我什至无法加载 X509 公钥。
谢谢
最佳答案
您可以尝试 PEM_read_RSA_PUBKEY()
而不是 PEM_read_RSAPublicKey()
。
这都是关于格式的。
openssl默认生成的公钥文件格式是PEM格式。
PEM_read_RSA_PUBKEY()
读取 PEM 格式。 PEM_read_RSAPublicKey()
读取 PKCS#1 格式。
因此,如果您想坚持使用 PEM_read_RSAPublicKey()
,您可以通过在生成公钥。
关于c - 为什么我无法使用 PEM_read_RSAPublicKey 读取 openssl 生成的 RSA 公钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22449697/