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