为了账号安全,请及时绑定邮箱和手机立即绑定

如何复制openssl命令解密cms文件

如何复制openssl命令解密cms文件

Go
慕尼黑的夜晚无繁华 2022-06-27 11:05:42
我曾尝试在 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。



查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信