openssl在C中创建rsa密钥对并导出它

时间:2012-08-16 14:29:44

标签: c openssl export rsa

我想在C / C ++中创建一个RSA密钥对,并将其导出为一个字符串以便使用它。

我设法创建了密钥

rsa = RSA_generate_key(bits, exp, NULL, NULL);
if(RSA_check_key(rsa)!=1){
    std::cout << "Error while checking key" << std::endl << std::flush;
}

pkey = EVP_PKEY_new();
EVP_PKEY_assign_RSA(pkey, rsa);

从这一点开始,我可以使用PEM_write_PUBKEY()和PEM_write_PrivateKey()将私钥和公钥写入文件。但我想要做的是将pkey中的私钥和公钥直接转换为变量,最好是PEM格式。我已经环顾四周但找不到合适的功能。任何提示?

1 个答案:

答案 0 :(得分:5)

如果你真的需要PEM表示,那么PEM_write_bio_RSA_PUBKEY()PEM_write_bio_RSAPrivateKey()(以及他们的read对应物)就是你想要的功能;给他们内存BIO让他们写入内存缓冲区。

您可以通过调用例如BIO来创建内存

BIO * b = BIO_new(BIO_s_mem());

并通过调用

获取内存缓冲区
void * buf;
BIO_get_mem_ptr(b, &buf);

您还可以通过调用例如

在现有内存周围创建内存BIO
BIO * b = BIO_new_mem_buf(buf, 9001)

但结果BIO将是只读的。