数字签名验证简介
需要检查文档的签名是否真实吗?数字签名就像电子指纹,帮助证明谁签署了文档,并显示签署后是否有人更改了文档。与纸质签名不同,数字签名使用特殊的加密,使其更加安全。
本指南将向您展示如何使用 Python 和 GroupDocs.Signature 库在文档中验证不同类型的签名。无论您需要检查 PDF、Word 或 Excel 文件中的数字签名、条形码或 QR 码,我们都提供了简单、可直接使用的代码示例。
什么是数字签名?
数字签名就像高科技版的手写签名,但具有额外的安全功能。以下是它们的特点:
- 证明身份 - 它们显示谁真的签署了文档
- 保护内容 - 它们显示签署后是否有人更改了文档
- 不可否认 - 签署者不能声称他们没有签署
当某人数字签署文档时,他们使用只有他们才有的私钥。任何人都可以使用公钥检查签名,以确保其真实性。本指南将学习这个检查过程。
将数字签名视为一种特殊的锁,只有一个人可以关闭,但任何人都可以验证它是否正确锁定。
如何验证数字签名
数字签名验证是确保文档真实性和完整性的关键过程。当您验证文档中的数字签名时,您实际上是在检查两件主要事情:签名是否真实,以及签署后文档是否被修改。
理解数字签名验证过程
数字签名验证过程涉及几个关键步骤,这些步骤共同验证电子签名:
证书链验证:每个数字签名都包含一个标识签署者的证书。在验证过程中,系统检查此证书是否有效、未过期,并且由受信任的证书颁发机构(CA)颁发。此步骤确保声称签署文档的人确实有权这样做。
加密哈希验证:数字签名使用加密哈希函数在签署时创建文档的唯一指纹。在验证签名时,系统重新计算此哈希并将其与原始哈希进行比较。如果它们匹配,则文档未被篡改。
时间戳验证:许多电子签名包含时间戳,证明文档的签署时间。此时间戳验证有助于建立签署顺序,并确保签名是在证书仍然有效时创建的。
数字签名验证的重要性
文档签名验证在现代商业工作流程中具有多个关键用途:
法律合规:许多行业需要验证的电子签名以满足监管标准。正确的签名验证确保您的文档在法律程序中有效,并符合欧洲的 eIDAS 或美国的 ESIGN 法案等法律。
安全保障:验证数字签名可以防止文档伪造和未经授权的修改。这对于合同、财务文件和敏感的商业协议尤为重要。
工作流程完整性:在自动化文档处理系统中,签名验证确保只有正确签署的文档通过您的业务流程,防止错误并维护质量控制。
可以验证的签名类型
现代文档签名解决方案支持各种签名类型,每种类型都有不同的用例:
基于 PKI 的数字签名:这些使用公钥基础设施,是最安全的选项。它们适用于高价值交易、法律文件和需要不可否认性的场景。
生物特征签名:这些捕获唯一的生物特征,如书写模式或指纹。它们适用于需要证明签署者物理存在的场景。
简单电子签名:这些包括基本的电子邮件确认、复选框接受或输入的名称。虽然不太安全,但适用于低风险协议和内部工作流程。
✅ 验证条形码签名
条形码可以在文档中存储签名信息。以下是检查条形码签名是否有效的方法:
- 获取正确的工具:导入 GroupDocs.Signature 模块
- 设置您的文档:告诉程序要检查哪个文件
- 检查条形码:使用特殊选项验证条形码
- 获取结果:查看签名是否有效
以下是执行所有这些操作的代码:
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()
✅ 验证数字签名
数字签名是最安全的类型,因为它们使用特殊的证书。以下是如何验证它们的方法:
- 获取正确的工具:导入所需的模块
- 设置您的文档:指向您的签署文件
- 设置验证选项:告诉程序要检查什么
- 运行检查:验证签名
- 查看结果:查看是否通过测试
以下是执行这些操作的代码:
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 码是您可以用手机扫描的正方形图案。它们也可以存储签名信息。以下是如何检查它们的方法:
- 准备好您的工具:导入所需的模块
- 选择您的文档:设置文件路径
- 设置 QR 验证:创建正确的选项
- 检查 QR 码:运行验证
- 查看是否通过:检查结果
以下是执行这些操作的代码:
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/ 获取临时许可证,以便在没有限制的情况下测试所有功能。