2010-06-24 142 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

相关问题