c - 为什么我无法使用 PEM_read_RSAPublicKey 读取 openssl 生成的 RSA 公钥?

标签 c encryption openssl rsa

我正在尝试像这样读取使用 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/

相关文章:

c - 在 C 中使用 strtok 将日期字符串转换为整数

c - C语言中查找链表中的函数

c - 如何制作字符的位掩码?

java - 带有盐和静态密码的 AES

java - RSA 使用 Pycrypto OAEP 加密并使用普通旧 Java 解密

python - 如何验证由 openssl 创建的 pycrypto 签名?

c - 在c中通过https发布json数据

c - Visual Studio 是唯一用于 C 编程的 IDE?

java - Android Studio 上的 Blowfish 用于加密/解密

android - 选项 -no-engine 导致 Android 的 OpenSSL 构建出现问题