gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:21:02 28 4
gpt4 key购买 nike

我曾尝试在 Go 中解密 CMS 文件,但无法这样做。我用来通过 openssl 解密的命令是 openssl cms -decrypt -inform DER -recip X -inkey Y .这很好用并且文件被正确解密。目前我在 Go 中使用 os/exec 使用相同的命令对其进行解密,但我希望有一些库可以执行相同的功能。但是,我已经能够弄清楚这是如何完成的。
我曾尝试使用 pkcs7 解密,但没有成功,尽管我怀疑这个包是正确的。我目前的尝试:

pkey, _ := ioutil.ReadFile(privKeyLoc)

//decrypt attempt 1
pk_obj, _ := pkcs7.Parse(data)
_, err := pk_obj.DecryptUsingPSK(pkey)
//err = "pkcs7: content data is a decryptable data type"

//attempt 2
rs, _ := 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"

最佳答案

问题原来是 mozilla pkcs7 library在 key 解密方面的支持非常有限,无论 pkcs7 对象 key 算法标识符是什么,都使用“rsa.DecryptPKCS1v15”。我的 key 是使用 id-RSAES-OAEP 加密的,必须使用 'rsa.DecryptOAEP'。我的解决方案是 fork 库并更新 Decrypt检查使用哪种算法并在适用时使用 DecryptOAEP 的函数。

关于go - 如何复制openssl命令解密cms文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63578177/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com