如何使用OpenSSL C库将RSA密钥从二进制数据加载到RSA结构?

Tho*_*ini 2 c c++ openssl rsa

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

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

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

不幸的是,虽然我还没有办法做到这一点.保存和加载我知道的密钥的唯一方法是将其直接读取/保存到文件中.

caf*_*caf 6

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

const unsigned char *p = key;
RSA *r = d2i_RSAPrivateKey(NULL, &p, keylen);
Run Code Online (Sandbox Code Playgroud)