为了账号安全,请及时绑定邮箱和手机立即绑定

使用 smime.p7m 签名的邮件(未加密)

使用 smime.p7m 签名的邮件(未加密)

C#
四季花海 2021-11-28 20:20:36
我尝试从签名邮件中提取一个或多个 PDF 文件。只是我尝试加载 smime.p7mmimeMessage = MimeMessage.Load(mem); //mem 是来自 File 创建的 MemoryStream,File.WriteAllBytes(file,fileAttachment.Content); (EWS 文件附件)这是行不通的,因为文件开头为:0€ *†H†÷ €0€10 + 0€ *†H†÷ €$€‚ &Content-Type: multipart/mixed; 边界="----=_NextPart_000_0024_01D432F9.7988F010"因此,我在 Content-Type(带有 IndexOf、Substring)之前删除了这些内容(并非所有内容都可见).. 现在我可以将其加载到 MineMessage 中。现在我尝试解码 Base64 字符串,但如果我使用 decodeto 方法文件大小几乎相同但文件已损坏,如果我查看 Outlook 解码的原始 PDF 文件的原始数据和我解码的原始数据,它们几乎是相同但在最后 10% 中它们不同(在原始中有更多的换行符)。所以我尝试使用Convert.FromBase64String() 但我总是收到无效的 base64 代码异常带标题的 PDF 部分以以下内容开头:内容类型:应用程序/pdf;name="DE_Windows 7_WebDAV.pdf" 内容传输编码:base64 内容处理:附件;文件名="WebDAV.pdf"‚JVBERi0xLjUNCiW1tbW1DQoxIDAgb ...(在 , 之前和之后,这里不可见字符,我也删除了它们)。如果我将 base64 代码(使用 Windows 编辑器复制和粘贴为文本)加载到在线解码器中,它正在解码,如果我上传带有 base64 代码的文件,它会失败......并且在 base64 中是一些非 base64 字符“未知”,“, ““向上箭头符号”,我认为这会杀死解码,这里的base64代码太长=((见图)但这 1:1 什么 File.WriteAllBytes(file,fileAttachment.Content); 或/和 fileAttachment.Load(file); 保存你能帮我吗?而这个未知的Chars又是从哪里来的呢?
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

好的,我明白了......我生命中的 2 天为此浪费了 ***

在保存已签名的附件之前,您必须运行此代码以“取消签名”并且您不想要的所有字符都消失了 =)

byte [] content = fileAttachment.Content;

var signed = new SignedCms();

签名。解码(内容);

byte[] unsigned = signed.ContentInfo.Content;


查看完整回答
反对 回复 2021-11-28
  • 1 回答
  • 0 关注
  • 429 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信