c++ - 如何使用 OpenSSL C 库将 RSA key 从二进制数据加载到 RSA 结构?

标签 c++ c openssl rsa

目前我将我的私钥保存在一个文件 private.key 中,我使用以下函数加载它:

RSA *r = PEM_read_RSAPrivateKey("private.key", NULL, NULL, NULL);

这很好用,但我对基于文件的格式不满意;我想将我的 key 以纯二进制形式(即,没有 base64 或类似格式)保存在 char* 变量中,并从中加载/保存 key 。这样我就有了更多的自由:我将能够将 key 直接存储到应用程序 const char key[] { 0x01, 0x02, ... }; 中,通过网络套接字发送它等

不幸的是,我还没有找到一种方法来做到这一点。据我所知,保存和加载 key 的唯一方法是直接将其读取/保存到文件中。

最佳答案

使用 d2i_RSAPrivateKey 直接从包含二进制 DER 格式的缓冲区加载:

const unsigned char *p = key;
RSA *r = d2i_RSAPrivateKey(NULL, &p, keylen);

关于c++ - 如何使用 OpenSSL C 库将 RSA key 从二进制数据加载到 RSA 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2477570/

相关文章:

c++ - For循环不会在零索引处停止

c++ - 检查输入值是否为 float ,清除 cin

c++ - 如何确定传入连接是否需要 SSL?

c++ - 在模板初始化期间,模板参数列表中的 false 评估为什么?

c - IF 和 ELSE IF 子句有什么区别?

c - 实现一般超时

c - 无法评估表达式。 Malloc 失败

c++ - 在 Windows 上使用 openssl 库生成随 secret 钥/数据

c - c 和 java 中的输出 AES/ECB/PKCS7 不相同

相当于 OpenSSL AES CBC 加密的 Java