2

我正在尝试使用证书和私钥解密签名和加密的电子邮件。这非常适用于加密的电子邮件。如果电子邮件经过签名和加密,则会在任何文件附件数据的开头和结尾添加额外字符。例如,多余的字符?/?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/字符实际上是一个正方形。该编辑器将其更改为正斜杠。

4

0 回答 0