如何在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中是否存在等效内容?
答案 0 :(得分:1)
我想你可能正在寻找crypto / tls,而不是crypto / rsa。
我不是100%肯定你在这里尝试做什么,但tls包确实有一些阅读PEM文件的功能。
答案 1 :(得分:0)
等效函数似乎是SignPKCS1v15
。 ParsePKCS1PrivateKey
包中的函数crypto/x509似乎最接近您在现有私钥中读取的内容,但我不确定PEM格式是否完全兼容,它必须是这个工作。