如何使用Go编程语言从PEM文件读取RSA私钥进行加密?

时间:2010-06-24 03:55:59

标签: rsa go pem

如何在go中执行以下C ++代码的等效操作?

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()。但我没有看到如何使用GenerateKey()创建一个PrivateKey对象,(通过查看the source可以确认)使用随机素数生成一个。

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

更新:与Python中的上述C ++代码相同的是:

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

Go中是否存在等效内容?

2 个答案:

答案 0 :(得分:1)

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

我不是100%肯定你在这里尝试做什么,但tls包确实有一些阅读PEM文件的功能。

答案 1 :(得分:0)

等效函数似乎是SignPKCS1v15ParsePKCS1PrivateKey包中的函数crypto/x509似乎最接近您在现有私钥中读取的内容,但我不确定PEM格式是否完全兼容,它必须是这个工作。