1
我想在C/C++中创建一个RSA密钥对并将其导出为字符串以便与之配合使用。openssl在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格式。我已经环顾四周,但无法找到正确的功能。任何提示?
我将如何导出到PKCS#1 DER(没有base64的东西)。那么其他一些格式(PKCS#8,PKCS#12等)呢? – Uri 2012-08-21 18:23:39
@Uri对于DER,你需要'i2d_ *'函数族,它将内存缓冲区作为第二个参数。要在PKCS8中导出,您需要“PEM_write_bio_PKCS8PrivateKey”或“i2d_PKCS8PrivateKey_bio”,具体取决于格式。要导出一个PKCS12对象,你需要'i2d_PKCS12_bio',但是你必须先用'PKCS12_create'构造PKCS12。 – atomicinf 2012-08-21 19:31:01
另外,根据openssl文档,RSA_generate_key现在已被弃用,您应该使用RSA_generate_key_ex - http://www.openssl.org/docs/crypto/RSA_generate_key.html – geekonedge 2014-01-09 20:42:53