smime电子邮件解密

时间:2012-11-13 00:35:15

标签: .net email encryption x509certificate smime

我正在尝试使用证书和私钥解密签名和加密的电子邮件。这适用于加密的电子邮件。如果电子邮件已签名并加密,则会在任何文件附件数据的开头和结尾添加额外的字符。例如,?/?zHlTVqQAAMAAAAEAAAA//8AALgAAA...其中?/?z是额外字符。确切的字符将根据附件的类型和大小而有所不同。我可以寻找并剥离这些角色,但我需要知道每种可能的组合。

有没有人知道删除这些字符的更简单方法?以下是我用来解密电子邮件的代码,其中sInput是电子邮件的原始加密字符串:

Dim EncryptCert As New X509Certificate2(sCERTIFICATE, sCERTIFICATE_PASS)

data = Convert.FromBase64String(sInput)

Dim envData As New EnvelopedCms(New ContentInfo(data))
Dim Recipient As New CmsRecipient(SubjectIdentifierType.IssuerAndSerialNumber, EncryptCert)
Dim col As New X509Certificate2Collection(EncryptCert)

envData.Decode(data)
envData.Decrypt(col)

Dim decData As Byte() = envData.ContentInfo.Content
message = Encoding.ASCII.GetString(decData)

同样,只要电子邮件没有签名,这就很有效。电子邮件签名后,这些额外的字符会被添加到附件数据中,并且在删除之前我无法正确解码base64数据。

顺便说一下,在上面的字符串?/?z中,/字符实际上是一个正方形。该编辑器将其更改为正斜杠。

0 个答案:

没有答案