数字签名验证简介

需要检查文档的签名是否真实吗?数字签名就像电子指纹,帮助证明谁签署了文档,并显示签署后是否有人更改了文档。与纸质签名不同,数字签名使用特殊的加密,使其更加安全。

本指南将向您展示如何使用 Python 和 GroupDocs.Signature 库在文档中验证不同类型的签名。无论您需要检查 PDF、Word 或 Excel 文件中的数字签名、条形码或 QR 码,我们都提供了简单、可直接使用的代码示例。

什么是数字签名?

数字签名就像高科技版的手写签名,但具有额外的安全功能。以下是它们的特点:

  1. 证明身份 - 它们显示谁真的签署了文档
  2. 保护内容 - 它们显示签署后是否有人更改了文档
  3. 不可否认 - 签署者不能声称他们没有签署

当某人数字签署文档时,他们使用只有他们才有的私钥。任何人都可以使用公钥检查签名,以确保其真实性。本指南将学习这个检查过程。

将数字签名视为一种特殊的锁,只有一个人可以关闭,但任何人都可以验证它是否正确锁定。

如何验证数字签名

数字签名验证是确保文档真实性和完整性的关键过程。当您验证文档中的数字签名时,您实际上是在检查两件主要事情:签名是否真实,以及签署后文档是否被修改。

理解数字签名验证过程

数字签名验证过程涉及几个关键步骤,这些步骤共同验证电子签名:

证书链验证:每个数字签名都包含一个标识签署者的证书。在验证过程中,系统检查此证书是否有效、未过期,并且由受信任的证书颁发机构(CA)颁发。此步骤确保声称签署文档的人确实有权这样做。

加密哈希验证:数字签名使用加密哈希函数在签署时创建文档的唯一指纹。在验证签名时,系统重新计算此哈希并将其与原始哈希进行比较。如果它们匹配,则文档未被篡改。

时间戳验证:许多电子签名包含时间戳,证明文档的签署时间。此时间戳验证有助于建立签署顺序,并确保签名是在证书仍然有效时创建的。

数字签名验证的重要性

文档签名验证在现代商业工作流程中具有多个关键用途:

法律合规:许多行业需要验证的电子签名以满足监管标准。正确的签名验证确保您的文档在法律程序中有效,并符合欧洲的 eIDAS 或美国的 ESIGN 法案等法律。

安全保障:验证数字签名可以防止文档伪造和未经授权的修改。这对于合同、财务文件和敏感的商业协议尤为重要。

工作流程完整性:在自动化文档处理系统中,签名验证确保只有正确签署的文档通过您的业务流程,防止错误并维护质量控制。

可以验证的签名类型

现代文档签名解决方案支持各种签名类型,每种类型都有不同的用例:

基于 PKI 的数字签名:这些使用公钥基础设施,是最安全的选项。它们适用于高价值交易、法律文件和需要不可否认性的场景。

生物特征签名:这些捕获唯一的生物特征,如书写模式或指纹。它们适用于需要证明签署者物理存在的场景。

简单电子签名:这些包括基本的电子邮件确认、复选框接受或输入的名称。虽然不太安全,但适用于低风险协议和内部工作流程。

✅ 验证条形码签名

条形码可以在文档中存储签名信息。以下是检查条形码签名是否有效的方法:

  1. 获取正确的工具:导入 GroupDocs.Signature 模块
  2. 设置您的文档:告诉程序要检查哪个文件
  3. 检查条形码:使用特殊选项验证条形码
  4. 获取结果:查看签名是否有效

以下是执行所有这些操作的代码:

import groupdocs.signature as gs
import groupdocs.signature.options as gso
import groupdocs.signature.domain as gsd
import os

def run():
    # 要签署文档的路径
    file_path = "sample.pdf"

    # 打开要检查的文档
    with gs.Signature(file_path) as signature:
        options = gso.BarcodeVerifyOptions()
        options.all_pages = True  # 检查所有页面
        options.text = "12345"
        options.match_type = gsd.TextMatchType.CONTAINS

        # 验证签名
        result = signature.verify(options)

        if result.is_valid:
            print(f"\n文档 {file_path} 签名有效!")
        else:
            print(f"\n文档 {file_path} 签名检查失败。")

if __name__ == "__main__":
    run()

✅ 验证数字签名

数字签名是最安全的类型,因为它们使用特殊的证书。以下是如何验证它们的方法:

  1. 获取正确的工具:导入所需的模块
  2. 设置您的文档:指向您的签署文件
  3. 设置验证选项:告诉程序要检查什么
  4. 运行检查:验证签名
  5. 查看结果:查看是否通过测试

以下是执行这些操作的代码:

import groupdocs.signature as gs
import groupdocs.signature.options as gso
import os

def run():
    # 要签署文档的路径
    file_path = "sample.pdf"
    certificate_pfx = "证书路径"

    # 打开要检查的文档
    with gs.Signature(file_path) as signature:
        options = gso.DigitalVerifyOptions(certificate_pfx)
        options.contact = "Mr.Smith"
        options.password = "1234567890"

        # 验证签名
        result = signature.verify(options)

        if result.is_valid:
            print(f"\n文档 {file_path} 签名有效!")
            for item in result.succeeded:
                print(f"\n找到有效签名。")
        else:
            print(f"\n文档 {file_path} 签名检查失败。")

if __name__ == "__main__":
    run()

✅ 验证 QR 码签名

QR 码是您可以用手机扫描的正方形图案。它们也可以存储签名信息。以下是如何检查它们的方法:

  1. 准备好您的工具:导入所需的模块
  2. 选择您的文档:设置文件路径
  3. 设置 QR 验证:创建正确的选项
  4. 检查 QR 码:运行验证
  5. 查看是否通过:检查结果

以下是执行这些操作的代码:

import groupdocs.signature as gs
import groupdocs.signature.options as gso
import groupdocs.signature.domain as gsd
import os

def run():
    # 要签署文档的路径
    file_path = "sample.pdf"

    # 打开要检查的文档
    with gs.Signature(file_path) as signature:
        options = gso.QrCodeVerifyOptions()
        options.all_pages = True  # 检查所有页面
        options.text = "John"
        options.match_type = gsd.TextMatchType.CONTAINS

        # 验证签名
        result = signature.verify(options)

        if result.is_valid:
            print(f"\n文档 {file_path} 签名有效!")
        else:
            print(f"\n文档 {file_path} 签名检查失败。")

if __name__ == "__main__":
    run()

📝 结论

在今天的数字世界中,验证数字签名对于确保文档安全至关重要。使用 GroupDocs.Signature for Python via .NET,您可以轻松检查文档中的不同类型签名:

  • ✔️ 条形码签名用于跟踪和自动化系统
  • ✔️ 基于证书的数字签名
  • ✔️ 适用于移动友好验证的 QR 码签名

本指南中的代码示例展示了将签名验证添加到 Python 应用程序的简单性。通过实施这些验证方法,您可以:

  • 确保文档未被篡改
  • 验证文档签署者的身份
  • 创建更安全的文档工作流程
  • 建立对数字文档流程的信任

今天开始实施数字签名验证,将您的文档安全提升到一个新的水平!

获取免费试用

想亲自试用这些签名验证功能吗?您可以从 releases.groupdocs.com 下载 GroupDocs.Signature for Python via .NET 的免费试用版。您还可以在 https://purchase.groupdocs.com/temporary-license/ 获取临时许可证,以便在没有限制的情况下测试所有功能。

另请参阅