我曾尝试在 Go 中解密 CMS 文件,但无法这样做。我用来通过 openssl 解密它的命令是openssl cms -decrypt -inform DER -recip X -inkey Y. 这很好用并且文件被正确解密。目前我在 Go 中使用 os/exec 使用相同的命令对其进行解密,但我希望有一些库可以执行相同的功能。但是,我已经能够弄清楚这是如何完成的。我曾尝试使用 pkcs7 解密,但没有成功,尽管我怀疑这个包是正确的。我目前的尝试:pkey, _ := ioutil.ReadFile(privKeyLoc)//decrypt attempt 1pk_obj, _ := pkcs7.Parse(data)_, err := pk_obj.DecryptUsingPSK(pkey)//err = "pkcs7: content data is a decryptable data type"//attempt 2rs, _ := ssh.ParseRawPrivateKey(pkey)crt, _ := tls.LoadX509KeyPair(pubKeyLoc, privKeyLoc)x509cert, _ := x509.ParseCertificate(crt.Certificate[0])_, err = pk_obj.Decrypt(x509cert, rs.(crypto.PrivateKey))//err = "crypto/rsa: decryption error"
1 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
问题原来是mozilla pkcs7 库在密钥解密方面的支持非常有限,并且无论 pkcs7 对象密钥算法标识符是什么都使用“rsa.DecryptPKCS1v15”。我的密钥是使用 id-RSAES-OAEP 加密的,必须使用 'rsa.DecryptOAEP'。我的解决方案是分叉库并更新Decrypt函数以检查使用哪种算法并在适用时使用 DecryptOAEP。
- 1 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消