gpt4 book ai didi

c++ - OpenSSL PEM_read_RSAPublicKey 和 PEM_read_RSA_PUBKEY 使程序崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 03:25:55 25 4
gpt4 key购买 nike

我有一个形式为

的公钥
-----BEGIN PUBLIC KEY-----
MIIB...
-----END PUBLIC KEY-----

这是使用 OpenSSL 创建的。我尝试像这样将它加载到内存中:

FILE* file = fopen("public.pem","r");
if (file != nullptr)
{
//This can be changed to this for the same results:
//RSA* rsa = PEM_read_RSAPublicKey(file, nullptr, nullptr, nullptr);
RSA* rsa = PEM_read_RSA_PUBKEY(file, nullptr, nullptr, nullptr);
//etc...
}

只要到达 RSA* rsa =... 行,程序就会崩溃。我已经看过其他帖子,并且(如您所见)我已经尝试了解决方案,但它不起作用。

我已经尝试使用 BIO 版本,程序没有崩溃,但我确实收到错误“无起始行”。

关于导致这种情况的原因有什么想法吗?

最佳答案

RSA* rsa = PEM_read_RSA_PUBKEY(file, nullptr, nullptr, nullptr);

第二个参数不能为 NULL。那是导致你崩溃的原因。此外,它是一个指向指针的指针(双重间接)。另见 PEM_read_RSA_PUBKEY man pages .

也许你应该使用类似的东西:

RSA* t = RSA_new();
RSA* rsa = PEM_read_RSA_PUBKEY(file, &t, nullptr, nullptr);

数据可能格式不正确,可能会导致意外崩溃。如果你提供真实的数据,那么我们通常可以交叉核对。在没有真实数据的情况下,我们真的不能说。

您可能还想访问 How to generate RSA private key using openssl? .它向您展示了几种 RSA 输出格式。它还向您展示了如何使用 C++ 管理 OpenSSL 资源。

关于c++ - OpenSSL PEM_read_RSAPublicKey 和 PEM_read_RSA_PUBKEY 使程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41091816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com