2010-06-24 29 views
1

我該如何做以下C++代碼的等價物?如何使用Go編程語言使用從PEM文件中讀取的RSA私鑰進行加密?

RSA *key = PEM_read_RSAPrivateKey(f, NULL, NULL, NULL); 
std::vector<CK_BYTE> out(128); 
RSA_private_encrypt(in.size(), &in[0], &out[0], key, RSA_PKCS1_PADDING) 

我看了Go rsa package。它看起來像EncryptPKCS1v15()可能相當於RSA_private_encrypt()。但是我沒有看到如何創建一個PrivateKey對象,而不是使用GenerateKey(),該對象(可以通過查看the source來確認)使用隨機素數生成一個。

我是否需要弄清楚如何解碼PEM文件,以便提取出PrivateKey字段的值?

更新:相當於上面的C++代碼在Python是:

from M2Crypto import RSA 
rsa_private_key = RSA.load_key('privkey.pem') 
encrypted = rsa_private_key.private_encrypt(digest, RSA.pkcs1_padding) 

是否有進入現有的相同呢?

回答

0

等價函數似乎是SignPKCS1v15crypto/x509軟件包中的函數ParsePKCS1PrivateKey似乎與您需要在現有私鑰中讀取的內容最接近,但我不確定PEM格式是否完全兼容,而且它必須能夠正常工作。

+0

編碼/ pem包可用於將PEM文件解碼爲合適的格式。 – brennie 2011-07-15 10:16:11

1

我想你可能正在尋找crypto/tls,而不是加密/ rsa。

我不是100%確定你要在這裏做什麼,但tls軟件包確實有一些閱讀PEM文件的功能。

+0

我沒有想到在cryto/tls包中看。我所看到的全部是SetFromPEM(),但是它的源代碼讓我看到了編碼/ pem包。這可能會幫助我推出自己的「PEM_read_RSAPrivateKey」函數。 – 2010-06-24 16:01:46

相關問題