数字签名作为PDF文档中的重要安全机制,不仅能够验证文件的来源,还能确保文件内容在传输过程中未被篡改。然而,如何正确验证PDF文件的数字签名,是确保文件完整性和可信度的关键。本文将详细介绍如何使用免费.NET控件通过C#验证PDF签名的有效性以及验证PDF文档是否被修改。
- C# 验证PDF数字签名有效性
- C# 验证PDF文档是否被修改
免费.NET PDF库安装:
Free Spire.PDF for .NET 免费库可以通过NuGet直接安装,或者通过以下链接下载产品包解压缩后手动引用dll。
https://www.e-iceblue.com/Download/download-pdf-for-net-free.html
使用C# 验证PDF数字签名有效性
Free Spire.PDF 提供了 PdfSignature 类用于代表PDF文档中的数字签名,要验证签名的有效性可以用该类的 VerifySignature() 方法。
主要步骤:
- 创建 PdfDocument 对象,并使用 LoadFromFile() 方法加载 PDF 文件。
- 获取 PDF 文件中的表单,然后使用获取表单字段集合。
- 遍历所有字段,并判断当前字段是否为签名字段(PdfSignatureFieldWidget 类)。
- 如果是签名字段,则通过 PdfSignatureFieldWidget.Signature 属性获取该PDF 签名。
- 使用 PdfSignature.VerifySignature() 方法检查 PDF 签名的有效性
- 输出结果。
C#示例代码:
using Spire.Pdf; using Spire.Pdf.Security; using Spire.Pdf.Widget; namespace VerifySignature { class Program { static void Main(string[] args) { //加载PDF文档 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("PDF签名.pdf"); //获取PDF文件中的表单字段集合 PdfFormWidget pdfFormWidget = (PdfFormWidget)pdf.Form; PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.FieldsWidget; //遍历所有字段 for (int i = 0; i < pdfFormFieldWidgetCollection.Count; i++) { //获取签名字段 if (pdfFormFieldWidgetCollection[i] is PdfSignatureFieldWidget) { PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget)pdfFormFieldWidgetCollection[i]; //获取PDF签名 PdfSignature signature = signatureFieldWidget.Signature; //验证签名有效性 bool valid = signature.VerifySignature(); if (valid) { Console.WriteLine("有效签名"); } else { Console.WriteLine("无效签名"); } } } } } }
验证结果:
使用C# 验证PDF文档是否被修改
验证PDF文档是否被修改也能间接验证电子签名的有效性,如果在签名之后文档内容被修改,那么PDF签名也将失效。通过使用 PdfSignature 类提供的 VerifyDocModified() 方法可以快速验证PDF文档的完整性。
主要步骤:
- 创建 PdfDocument 对象,并使用 LoadFromFile() 方法加载 PDF 文件
- 获取 PDF 文件中的表单,然后使用获取表单字段集合。
- 遍历所有字段,并判断当前字段是否为签名字段(PdfSignatureFieldWidget 类)。
- 如果是签名字段,则通过 PdfSignatureFieldWidget.Signature 属性获取该PDF 签名。
- 使用 PdfSignature.VerifyDocModified() 方法验证签名后文档是否被修改。
- 输出结果。
C#示例代码:
using Spire.Pdf; using Spire.Pdf.Security; using Spire.Pdf.Widget; namespace CheckSignature { class Program { static void Main(string[] args) { //加载PDF文档 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("PDF签名.pdf"); //获取PDF文件中的表单字段集合 PdfFormWidget pdfFormWidget = (PdfFormWidget)pdf.Form; PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.FieldsWidget; //遍历所有字段 for (int i = 0; i < pdfFormFieldWidgetCollection.Count; i++) { //获取签名字段 if (pdfFormFieldWidgetCollection[i] is PdfSignatureFieldWidget) { PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget)pdfFormFieldWidgetCollection[i]; //获取PDF签名 PdfSignature signature = signatureFieldWidget.Signature; //验证签名后PDF文档是否被修改 bool modified = signature.VerifyDocModified(); if (modified) { Console.WriteLine("文档被修改了。"); } else { Console.WriteLine("文档未被修改。"); } } } } } }
验证结果:
通过这些步骤和示例代码,我们可以确保PDF文档的完整性和电子签名的有效性,从而在处理重要文件时提供额外的安全保障。
相关文章推荐:
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容