如何使用 GroupDocs.Signature for .NET 实现带有时间戳和认证的 .NET 数字签名

介绍

您是否希望使用 .NET 中的数字签名来增强 PDF 文档的安全性?GroupDocs.Signature for .NET 可以更轻松地确保文档的真实性、完整性和不可否认性。无论您是需要添加来自受信任的第三方站点的时间戳,还是需要认证文档是否符合法律规定,这个强大的库都能简化流程。

在本教程中,我们将指导您使用 GroupDocs.Signature for .NET 对 PDF 文件进行数字签名,并在签名中添加时间戳。我们还将介绍如何使用数字签名对这些文档进行认证。学习完本指南后,您将全面了解如何在应用程序中实现这些功能。

您将学到什么:

  • 为 .NET 设置 GroupDocs.Signature
  • 使用时间戳实现数字签名
  • 以数字方式认证 PDF 文档
  • 优化性能和最佳实践

让我们深入了解开始的先决条件!

先决条件

在开始之前,请确保您具备以下条件:

  1. 所需的库和依赖项

    • GroupDocs.Signature for .NET:此库对于在您的应用程序中实现数字签名至关重要。
    • .NET Framework(4.7.2 或更高版本)或 .NET Core 3.0+
  2. 环境设置要求

    • 类似 Visual Studio 的开发环境,您可以在其中创建和运行 C# 项目。
  3. 知识前提

    • 对 C# 编程有基本的了解。
    • 熟悉处理 .NET 应用程序中的文件路径和 I/O 操作。

为 .NET 设置 GroupDocs.Signature

要将 GroupDocs.Signature 集成到您的项目中,请按照以下步骤操作:

使用 .NET CLI:

dotnet add package GroupDocs.Signature

程序包管理器控制台:

Install-Package GroupDocs.Signature

NuGet 包管理器 UI: 在 NuGet 包管理器中搜索“GroupDocs.Signature”并安装最新版本。

许可证获取

  • 免费试用: 从免费试用开始探索 GroupDocs.Signature 的功能。
  • 临时执照: 获取临时许可证来无限制地评估功能。
  • 购买: 购买完整许可证以供长期使用。

设置好环境后,初始化并配置库以开始签署文档。

实施指南

我们将介绍两个主要功能:为数字签名添加时间戳以及认证 PDF 文档。每个部分都会通过代码片段和说明逐步指导您。

带时间戳的数字签名

此功能允许您以数字方式签署 PDF,同时使用受信任的第三方时间戳服务器确保签名的有效性。

步骤1:初始化签名对象

首先,创建一个 Signature 通过提供文档的路径来添加类:

string filePath = "@YOUR_DOCUMENT_DIRECTORY/sample.pdf";
using (Signature signature = new Signature(filePath))
{
    // 进一步的步骤将在此处添加
}

步骤2:配置PdfDigitalSignature

创建并设置 PdfDigitalSignature 对象包含必要的详细信息,例如联系信息、位置和签名原因:

PdfDigitalSignature pdfDigitalSignature = new PdfDigitalSignature()
{
    ContactInfo = "Contact",
    Location = "Location",
    Reason = "Reason"
};

步骤 3:设置时间戳详细信息

通过指定第三方服务器的 URL 来配置时间戳,在本例中, freetsa.org

pdfDigitalTimestamp = new TimeStamp("https://freetsa.org/tsr”, “”, “”);
pdfDigitalSignature.TimeStamp = pdfDigitalTimestamp;

步骤 4:配置数字签名选项

通过指定数字证书路径和密码以及签名对齐首选项来设置签名选项:

digitalSignOptions = new DigitalSignOptions(certificatePath)
{
    Password = "1234567890",
    Signature = pdfDigitalSignature,
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalAlignment = HorizontalAlignment.Right
};

第五步:签署文件并获取结果

执行签名流程,将签名后的文档保存到指定路径,并打印结果:

SignResult signResult = signature.Sign(outputFilePathSigned, digitalSignOptions);
Console.WriteLine($"
Source document signed successfully with {signResult.Succeeded.Count} signature(s).
File saved at {outputFilePathSigned}.
");

数字签名认证

认证 PDF 文档可确保其符合一定的真实性和安全性标准。此流程对于法律和合规性至关重要。

步骤1:初始化签名对象

与时间戳功能类似,首先初始化 Signature 班级:

string filePath = "@YOUR_DOCUMENT_DIRECTORY/sample.pdf";
using (Signature signature = new Signature(filePath))
{
    // 进一步的步骤将在此处添加
}

步骤2:配置PdfDigitalSignature进行认证

创建一个 PdfDigitalSignature 对象,指定详细信息并将类型设置为证书:

PdfDigitalSignature pdfDigitalSignature = new PdfDigitalSignature()
{
    ContactInfo = "Contact",
    Location = "Location",
    Reason = "Reason"
};

pdfDigitalSignature.Type = PdfDigitalSignatureType.Certificate;

步骤 3:配置数字签名选项

设置签名选项,类似于添加时间戳:

digitalSignOptions = new DigitalSignOptions(certificatePath)
{
    Password = "1234567890",
    Signature = pdfDigitalSignature,
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalAlignment = HorizontalAlignment.Right
};

步骤4:签署文件并获取结果

执行认证流程,保存认证文档,并打印结果:

SignResult signResult = signature.Sign(outputFilePathCertified, digitalSignOptions);
Console.WriteLine($"
Source document signed successfully with {signResult.Succeeded.Count} signature(s).
File saved at {outputFilePathCertified}.
");

实际应用

  • 法律文件: 确保合同和协议长期保持完整性。
  • 财务报告: 证明财务报表的准确性和合规性。
  • 教育证书: 验证结业证书或奖励证书。
  • 电子商务交易: 确保采购订单和收据的安全。
  • 政府表格: 验证提交给公共机构的表格。

性能考虑

为了优化使用 GroupDocs.Signature 时的性能:

  • 资源使用情况: 监控内存使用情况,尤其是在处理大型文档时。
  • 批处理: 如果签署多个文件,请考虑批处理以提高效率。
  • 异步操作: 使用异步方法避免阻塞操作并提高应用程序的响应能力。

结论

通过本指南,您学习了如何使用 GroupDocs.Signature for .NET 对 PDF 文档进行数字签名并添加时间戳,以及如何对其进行认证。掌握这些技能后,您可以增强数字内容的安全性和真实性,确保跨领域的合规性。

下一步包括探索 GroupDocs.Signature 提供的其他功能,或将其集成到您应用程序中更大规模的工作流程中。欢迎您随时尝试不同的选项和配置。

常见问题解答部分

  1. 什么是数字签名?

    • 数字签名可确保文档的真实性和完整性,就像数字领域的手写签名一样。
  2. 如何获得签署文件的证书?

    • 您可以从受信任的证书颁发机构 (CA) 购买证书,或将自签名证书用于内部用途。
  3. GroupDocs.Signature 是否与所有 .NET 版本兼容?

    • 是的,它支持先决条件中指定的 .NET Framework 和 .NET Core。