openssl pem_read_rsapublickey和pem_read_rsa_pubkey崩溃了程序
OpenSSL PEM_read_RSAPublicKey and PEM_read_RSA_PUBKEY crashes the program
我有一个以
形式的公钥-----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版本,并且程序不会崩溃,但我确实遇到了错误" no Start Line"。
关于可能导致这一点的任何想法?
RSA* rsa = PEM_read_RSA_PUBKEY(file, nullptr, nullptr, nullptr);
第二个参数不能为null。那是导致您的崩溃。此外,它是一个指针到A分量(双间接)。另请参阅PEM_read_RSA_PUBKEY
人页。
也许您应该使用以下内容:
RSA* t = RSA_new();
RSA* rsa = PEM_read_RSA_PUBKEY(file, &t, nullptr, nullptr);
数据可能会畸形,并且可能导致意外的崩溃。如果您提供真实的数据,那么我们通常可以对其进行交叉检查。在没有真实数据的情况下,我们真的不能说。
您可能还需要访问如何使用OpenSSL?它显示了几种RSA输出格式。它还向您展示了如何使用C 管理OpenSSL资源。
相关文章:
- 将TPM公钥序列化为DER或PEM
- 使用 ImageIO.read() 生成的图像是否仍然使用传递给它的相同内存?
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- write() 和 read() 中几乎没有混淆
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- 为什么调试器引发"read access violation. this was nullptr"异常?
- 对同一文件使用 .read 的次数是否有限制?
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- SSLeay 读取 PEM 文件
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- QDataStream read to QVector
- asio::read() 需要很长时间,使用 asio::write 没有问题
- Read OpenCV Mat 16bit to QImage 8bit Greyscale
- 如果 I/O read() 处于阻塞阶段,如何使用 Ctrl+C 退出 C++ 程序?
- 如何将 (serverClients[i].read() 传递给 ESP8266 上的字节数组
- 将 Lora.read() 转储到数组
- 无法通过 FUSE 文件系统"read"任何内容
- 指向 std::unrodered_map 中元素的指针返回'Read access violation'
- 封送指向结构异常"cannot Read or Write protected memory"的指针数组的指针数组
- C++HTTP客户端在GET请求后挂起read()调用