引言
数字签名作为pdf文档中的重要安全机制,不仅能够验证文件的来源,还能确保文件内容在传输过程中未被篡改。然而,如何正确验证pdf文件的数字签名,是确保文件完整性和可信度的关键。本文将详细介绍如何使用免费.net控件通过c#验证pdf签名的有效性以及验证pdf文档是否被修改。
使用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文档的完整性和电子签名的有效性,从而在处理重要文件时提供额外的安全保障。
以上就是使用c#验证pdf数字签名有效性的方法示例的详细内容,更多关于c#验证pdf数字签名有效性的资料请关注代码网其它相关文章!
发表评论