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

我曾尝试在 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"


慕尼黑的夜晚无繁华
浏览 138回答 1
1回答

慕工程0101907

问题原来是mozilla pkcs7 库在密钥解密方面的支持非常有限,并且无论 pkcs7 对象密钥算法标识符是什么都使用“rsa.DecryptPKCS1v15”。我的密钥是使用 id-RSAES-OAEP 加密的,必须使用 'rsa.DecryptOAEP'。我的解决方案是分叉库并更新Decrypt函数以检查使用哪种算法并在适用时使用 DecryptOAEP。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go