2

如何在 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 包。看起来 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 中是否存在现有的等价物?

4

2 回答 2

2

我认为您可能正在寻找加密/tls,而不是加密/rsa。

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

于 2010-06-24T14:52:37.720 回答
1

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

于 2010-06-24T23:36:54.200 回答