數字簽名用於在與第三方共享之前保護 PDF 文檔。對 PDF 文檔進行數字簽名可以通過使用數字簽名驗證文檔來檢測篡改。為了使用數字簽名以編程方式保護 PDF 文檔,本文將向您展示如何使用 C# 在 PDF 文件中添加數字簽名。您還將學習如何使用 C# 驗證 PDF 文件中的數字簽名。
用於在 PDF 中添加數字簽名的 C# .NET API
為了在 PDF 文檔中添加和驗證數字簽名,我們將使用 Aspose.PDF for .NET API,這是一個強大的 PDF 操作 API,用於創建、編輯、轉換和數字簽名 PDF 文檔。您可以下載 Aspose.PDF for .NET 或在 Visual Studio 中使用以下方式之一安裝它:
NuGet 包管理器
包管理器控制台
PM> Install-Package Aspose.PDF
在 C# 中向 PDF 添加數字簽名
以下是使用 Aspose.PDF for .NET 簽署 PDF 文檔的步驟。
- 創建 Document 類的對象並使用 PDF 文檔的路徑對其進行初始化。
- 創建 PdfFileSignature 類的對象並使用 Document 類的對像對其進行初始化。
- 創建一個 PKCS7 類的對象並使用證書路徑和密碼對其進行初始化。
- 為 MDP 簽名類型創建並初始化 DocMDPSignature 類的對象。
- 創建一個 Rectangle 用於放置簽名。
- 使用 PdfFileSignature.Certify() 方法對 PDF 文檔進行數字簽名。
- 使用 PdfFileSignature.Save() 方法保存文檔。
以下代碼示例顯示瞭如何使用 C# 向 PDF 文檔添加數字簽名。
// 載入PDF文件
using (Document pdfDocument = new Document("Document.pdf"))
{
using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
{
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
// 設置簽名外觀
signature.SignatureAppearance = @"aspose-logo.png";
// 創建三種簽名類型中的任何一種
signature.Certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// 保存數字簽名的 PDF 文件
signature.Save("Digitally Signed PDF.pdf");
}
}
C# 使用時間戳服務器向 PDF 添加數字簽名
您還可以通過使用 TimestampSettings 類提供其詳細信息,使用 TimeStamp 服務器將數字簽名添加到 PDF 文檔。以下代碼示例顯示如何使用 C# 中的時間戳服務器對 PDF 文檔進行數字簽名。
// 載入PDF文件
using (Document pdfDocument = new Document("Document.pdf"))
{
using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
{
PKCS7 pkcs = new PKCS7("certificate.pfx", "WebSales"); // Use PKCS7/PKCS7Detached objects
TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
pkcs.TimestampSettings = timestampSettings;
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);
// 創建三種簽名類型中的任何一種
signature.Sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// 保存輸出 PDF 文件
signature.Save("Output.pdf");
}
}
在 C# 中驗證數字簽名的 PDF
以下是驗證 PDF 文檔中的數字簽名的步驟:
- 創建 Document 類的對象並使用 PDF 文檔的路徑對其進行初始化。
- 創建 PdfFileSignature 類的對象並使用 Document 類的對像對其進行初始化。
- 訪問 PDF 文檔的所有簽名。
- 使用 PdfFileSignature.VerifySigned() 方法驗證簽名的有效性。
以下代碼示例顯示瞭如何使用 C# 驗證 PDF 中的數字簽名。
// 載入PDF文件
using (Document pdfDocument = new Document("Document.pdf"))
{
using (PdfFileSignature signature = new PdfFileSignature(pdfDocument))
{
IList<string> sigNames = signature.GetSignNames();
if (sigNames.Count > 0) // Any signatures?
{
if (signature.VerifySigned(sigNames[0] as string)) // Verify first one
{
if (signature.IsCertified) // Certified?
{
if (signature.GetAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
{
// 做一點事
}
}
}
}
}
}
免費試用 Aspose.PDF for .NET
您可以獲得免費臨時許可證 來嘗試使用 Aspose.PDF for .NET。
結論
在本文中,您了解瞭如何在 C#.NET 中向 PDF 文件添加數字簽名。此外,您還了解瞭如何在 C# 中以編程方式驗證數字簽名的 PDF 文件。您可以簡單地在您的應用程序中安裝 Aspose.PDF for .NET 並無縫地對您的 PDF 文件進行數字簽名。