跳至页脚内容
产品比较
如何使用 ITextSharp 在 C# 中向 PDF 添加数字签名

在C#中使用Itextsharp为PDF添加数字签名

在当今快节奏的数字化世界中,实体文件正迅速被电子文档所取代。 无论是签署合同、批准发票还是提交政府表格,数字文档都已成为新常态。 但是,便利的同时也带来了新的问题:如何确保这些数字文档的真实性和完整性?

输入电子签名。 数字签名不仅仅是在触摸屏上涂鸦,它使用加密技术来验证签名者的身份,并保证文档内容未被篡改。 For C# developers, integrating this level of security into PDF workflows is easier than ever—especially with tools like IronPDF and iTextSharp. 在本文中,我们将介绍 对 PDF 进行数字签名的过程,比较各种库,提供最佳实践,并帮助您为下一个项目选择合适的解决方案。

了解数字签名

为什么在 PDF 中使用数字签名? PDF 是分发从法律合同到官方报告等专业文件的标准格式。 为 PDF 添加数字签名有几个重要目的: - **合法性与合规性**:数字签名符合 eIDAS(欧洲)、ESIGN(美国)等法规,因此在法律上得到认可。 - **安全性**:签名文档在不破坏签名的情况下无法更改,从而防止篡改或欺诈。 - **效率**:无需打印、签名和扫描。 通过安全的数字审批节省时间并简化工作流程。 - **信任**:客户和合作伙伴可以放心地验证文件的来源和完整性。 简而言之,数字签名为您的文档工作流程带来了**信任和效率**。 ## 比较 iTextSharp 和 IronPDF. 在 C# 中实现数字签名时,有两个库往往脱颖而出:**iTextSharp** 和 **IronPDF** 。 这两种工具都很实用,但它们满足了不同类型的开发人员和项目要求。 让我们来分析一下它们在实际使用中的对比情况。

iTextSharp:以复杂性为动力

并排摘要特性iTextSharpIronPdf易用性许可签名定制文档最适合iTextSharp 和 IronPDF 入门安装基本设置需要注意的事项安装 通过 NuGet 控制台安装 IronPDF 或使用 .NET CLI: ```shell :ProductInstall ```

基本设置

初学者的主要优势循序渐进:添加数字签名1.准备证书2.使用 iTextSharp 和 BouncyCastle 进行 PDF 签名包含必要的命名空间定义证书路径和密码使用 Pkcs12Store 加载 .PFX 证书为 PdfStamper 添加签名做好准备自定义签名外观().FirstOrDefault( entryAlias => pfxKeyStore.IsKeyEntry(entryAlias) ); // Ensure a valid alias (certificate) was found if (alias != null) { // Retrieve the private key for signing ICipherParameters privateKey = pfxKeyStore.GetKey(alias).Key; // Create a signer using SHA-256 and the private key IExternalSignature pks = new PrivateKeySignature(privateKey, DigestAlgorithms.SHA256); // Perform the digital signing operation using CMS format MakeSignature.SignDetached( signatureAppearance, // Signature appearance pks, // External signature handler new Org.BouncyCastle.X509.X509Certificate[] { pfxKeyStore.GetCertificate(alias).Certificate }, // Certificate chain (basic single-cert example) null, null, null, // Optional CRL, OCSP, TSA 0, // Estimated size for the signature (0 = auto) CryptoStandard.CMS // Signature standard (CMS vs CAdES) ); } else { Console.WriteLine("Private key not found in the PFX certificate."); } ``` 完成文档输出 使用 iTextSharp 签名的 PDF

Bootstrap 安全配置表单

PDF Security Configuration

Certificate
Signature
3
Encryption
4
Finalize
Step 3: Encryption & Permissions
AES-256 provides enterprise-grade security
Owner password controls document permissions
✓ Configuration Valid
Security settings meet compliance requirements
Security Comparison
IronPDF
AES-256 Native
iTextSharp
Complex Setup
"; var pdf = renderer.RenderHtmlAsPdf(securityConfigForm); pdf.SaveAs("security-configuration.pdf"); ``` **输出**:专业的安全配置表单 PDF,包含 Bootstrap 5 步骤指示器、表单控件、开关和验证提醒。 IronPDF 可以完美逼真地渲染所有表单样式、实用工具类和交互式元素,与 iTextSharp 的编程方法相比,IronPDF 展示了卓越的表单渲染能力。 有关 Bootstrap 表单支持的更多详细信息,请参阅 [Bootstrap & Flexbox CSS 指南](/troubleshooting/bootstrap-flex-css/)。

3.使用 IronPDF 在 C# 中对 PDF 进行数字签名

包含必要的命名空间加载您要签署的 PDF 文件加载用于签名的 PFX 证书输出4.代码解释5.真实世界使用案例数字签名的最佳实践结论iTextSharp 与 IronPDF 对比图。

下一步

常见问题解答

数字签名如何确保 PDF 文档的真实性?

数字签名使用加密技术验证签名者的身份,并确保文档未被更改。这是通过使用私钥加密文档的哈希来实现的,既提供了身份验证又确保了完整性。

为什么数字签名对于电子文档很重要?

数字签名对于维护电子文档的合法性、安全性、效率和信任至关重要。它们确保遵守法规,防止篡改,简化文档工作流程,并确认文档的来源和完整性。

如何在 C# 中向 PDF 添加数字签名?

在 C# 中,您可以使用 IronPDF 向 PDF 添加数字签名。该过程包括加载 PDF,使用 X509Certificate2 提供 .pfx 证书,并调用 Sign 方法应用签名。

iTextSharp 和另一种 PDF 库在数字签名方面的主要区别是什么?

iTextSharp 提供详尽的 PDF 操作支持,学习曲线陡峭且需要特定许可。相比之下,IronPDF 更适合初学者,其简化的 API 允许快速实现,不需要开源许可。

如何在 C# 中安装用于签署文档的 PDF 库?

您可以使用命令 Install-Package IronPdf 通过 NuGet 安装 IronPDF,或者使用 .NET CLI 的 dotnet add package IronPdf

使用 iTextSharp 数字签名 PDF 需要哪些步骤?

要使用 iTextSharp 数字签名 PDF,您需要配置 PdfStamper,自定义签名外观,使用 BouncyCastle 加载 .pfx 证书,并使用 PdfSignerIExternalSignature 执行加密操作。

在 PDF 中实现数字签名的一些最佳实践是什么?

最佳实践包括使用强大的证书、保护私钥、对签名应用时间戳、定期验证签名,并自动化签名过程以维护文档完整性。

数字签名在 PDF 文档中的一些实际应用是什么?

数字签名通常用于法律部门签署合同、金融部门批准发票和报告、以及政府机构处理表格,以确保符合法规标准。

哪种 PDF 库更适合需要快速实施数字签名的开发人员?

对于需要快速实施数字签名的开发人员,IronPDF 是推荐的选择,因为其简单明了的 API 简化了签名过程,仅需少量代码。

IronPDF 是否兼容 .NET 10,可用于添加和验证数字签名?

是的——IronPDF 与 .NET 10 完全兼容。它支持 .NET 10(以及 .NET 9、8、7 等),其数字签名功能(例如使用PdfSignatureX509Certificate2 、签名和验证)在 .NET 10 运行时中开箱即用。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。