我曾嘗試在 Go 中解密 CMS 文件,但無法這樣做。我用來通過 openssl 解密它的命令是openssl cms -decrypt -inform DER -recip X -inkey Y. 這很好用并且文件被正確解密。目前我在 Go 中使用 os/exec 使用相同的命令對(duì)其進(jìn)行解密,但我希望有一些庫(kù)可以執(zhí)行相同的功能。但是,我已經(jīng)能夠弄清楚這是如何完成的。我曾嘗試使用 pkcs7 解密,但沒有成功,盡管我懷疑這個(gè)包是正確的。我目前的嘗試: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貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
問題原來是mozilla pkcs7 庫(kù)在密鑰解密方面的支持非常有限,并且無論 pkcs7 對(duì)象密鑰算法標(biāo)識(shí)符是什么都使用“rsa.DecryptPKCS1v15”。我的密鑰是使用 id-RSAES-OAEP 加密的,必須使用 'rsa.DecryptOAEP'。我的解決方案是分叉庫(kù)并更新Decrypt函數(shù)以檢查使用哪種算法并在適用時(shí)使用 DecryptOAEP。
- 1 回答
- 0 關(guān)注
- 166 瀏覽
添加回答
舉報(bào)
0/150
提交
取消