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