C# 使用MailSystem.Net的带有附件符号的S/Mime
我是s/mime新手,需要使用xml附件对电子邮件进行数字签名,但不幸的是,这封电子邮件的哈希值错误(根据外部系统的响应)。我深入研究了库的代码,发现它为base64编码的身体部位创建了一个符号,是正确的还是应该为xml附件内容计算签名 还有一些问题:C# 使用MailSystem.Net的带有附件符号的S/Mime,c#,smime,mailsystem.net,C#,Smime,Mailsystem.net,我是s/mime新手,需要使用xml附件对电子邮件进行数字签名,但不幸的是,这封电子邮件的哈希值错误(根据外部系统的响应)。我深入研究了库的代码,发现它为base64编码的身体部位创建了一个符号,是正确的还是应该为xml附件内容计算签名 还有一些问题: 许多头文件/参数都是由库文件记录的:例如,ContentType参数、一些头文件(如X-Mailer)和许多其他头文件 它为内容类型创建了一个空边界:text/plain,尽管除了附件我没有任何文本 这是我的密码: public static v
public static void Sign(X509Certificate2 clientCert, string from, string to, string subject, string attachementPath)
{
Message message = new Message();
message.From = new Address(from);
message.To.Add(to);
message.ContentType.MimeType = "multipart/signed";
message.ContentType.Parameters.Add("protocol", "\"application/pkcs7-signature\"");
message.ContentTransferEncoding = ContentTransferEncoding.SevenBits;
message.AddHeaderField("MIME-Version", "1.0");
message.Subject = subject;
var mimePart = new MimePart(attachementPath, false);
mimePart.ContentTransferEncoding = ContentTransferEncoding.Base64;
mimePart.Charset = "windows-1251";
mimePart.ContentType.MimeType = "text/xml";
message.Attachments.Add(mimePart);
message.BuildMimePartTree();
CmsSigner signer = new CmsSigner(clientCert);
signer.IncludeOption = X509IncludeOption.EndCertOnly;
message.SmimeAttachSignatureBy(signer);
}
你应该分享更多的信息。你在说什么图书馆?它是如何使用的?能否提供签名前后的消息示例?您列出的问题不一定是问题。签名是一种加密算法,要验证签名,您必须使用与创建签名的代码相同的密钥、算法和数据。很多时候,对于签名文档,您将从模板开始,然后从模板创建签名文档。所以我认为过度编写只是修改模板。我正在使用MailSystem.Net库,并且我已经编辑了代码示例(没有发送部分)