1

我想在 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 格式。我已经环顾四周,但找不到合适的功能。有什么提示吗?

4

1 回答 1

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将是只读的。

于 2012-08-16T15:27:50.087 回答