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

时间:2010-03-19 13:22:45

标签: c++ c openssl rsa

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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