我该如何等效于以下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软件包。看起来EncryptPKCS1v15()可能等同于RSA_private_encrypt()。但是除了GenerateKey()之外,我看不到如何创建一个PrivateKey对象,该对象(可以通过查看源代码来确认)使用随机质数生成一个。
我是否需要弄清楚如何解码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中是否存在现有的等效项?
等效功能似乎是SignPKCS1v15。该功能ParsePKCS1PrivateKey在加密/ X509包似乎是最接近你需要在现有的私有密钥读什么,但我不知道该PEM格式是完全兼容的,它必须是此工作。
SignPKCS1v15
ParsePKCS1PrivateKey