Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MailSystem.Net的带有附件符号的S/Mime_C#_Smime_Mailsystem.net - Fatal编程技术网

C# 使用MailSystem.Net的带有附件符号的S/Mime

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

我是s/mime新手,需要使用xml附件对电子邮件进行数字签名,但不幸的是,这封电子邮件的哈希值错误(根据外部系统的响应)。我深入研究了库的代码,发现它为base64编码的身体部位创建了一个符号,是正确的还是应该为xml附件内容计算签名

还有一些问题:

  • 许多头文件/参数都是由库文件记录的:例如,ContentType参数、一些头文件(如X-Mailer)和许多其他头文件
  • 它为内容类型创建了一个空边界:text/plain,尽管除了附件我没有任何文本
  • 这是我的密码:

    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库,并且我已经编辑了代码示例(没有发送部分)