c - openssl 在 C 中创建 rsa key 对并导出它

标签 c openssl export rsa

我想在 C/C++ 中创建一个 RSA key 对并将其导出为一个字符串以供使用。

我成功地创建了 key

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

最佳答案

如果您真的需要 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 将是只读的。

关于c - openssl 在 C 中创建 rsa key 对并导出它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11989410/

相关文章:

sql-server - 如何修复 Microsoft ODBC Driver 17 for SQL Server : SSL Provider ssl_choose_client_version:unsupported protocol

android - 这是在 Android 应用程序中使用 ProGuard 的正确方法吗?

python - Django CSV Export..在列表中迭代

c - 使用 UNIX 套接字 "zero-length datagrams"的原因是什么?

计算 int 中的位数 - 为什么这段代码有效?

c - 如何获取用户输入的数组大小

PHP Mysql 导出为pdf

c - 为什么程序应该返回一个值?

apache - httpd 2.4 (mod_ssl) 中的每个目录 CA

c - 不稳定的 openssl/rsa 行为 : RSA_EAY_PRIVATE_DECRYPT:padding check failed