數字簽名作為PDF文檔中的重要安全機制,不僅能夠驗證文件的來源,還能確保文件內容在傳輸過程中未被篡改。然而,如何正確驗證PDF文件的數字簽名,是確保文件完整性和可信度的關鍵。本文將詳細介紹如何使用免費.NET控制項通過C#驗證PDF簽名的有效性以及驗證PDF文檔是否被修改。 C# 驗證PDF數字簽名有 ...
數字簽名作為PDF文檔中的重要安全機制,不僅能夠驗證文件的來源,還能確保文件內容在傳輸過程中未被篡改。然而,如何正確驗證PDF文件的數字簽名,是確保文件完整性和可信度的關鍵。本文將詳細介紹如何使用免費.NET控制項通過C#驗證PDF簽名的有效性以及驗證PDF文檔是否被修改。
- C# 驗證PDF數字簽名有效性
- C# 驗證PDF文檔是否被修改
免費.NET PDF庫安裝:
Free Spire.PDF for .NET 免費庫可以通過NuGet直接安裝,或者通過以下鏈接下載產品包解壓縮後手動引用dll。
https://www.e-iceblue.com/Download/download-pdf-for-net-free.html
使用C# 驗證PDF數字簽名有效性
Free Spire.PDF 提供了 PdfSignature 類用於代表PDF文檔中的數字簽名,要驗證簽名的有效性可以用該類的 VerifySignature() 方法。
主要步驟:
- 創建 PdfDocument 對象,並使用 LoadFromFile() 方法載入 PDF 文件。
- 獲取 PDF 文件中的表單,然後使用獲取表單欄位集合。
- 遍歷所有欄位,並判斷當前欄位是否為簽名欄位(PdfSignatureFieldWidget 類)。
- 如果是簽名欄位,則通過 PdfSignatureFieldWidget.Signature 屬性獲取該PDF 簽名。
- 使用 PdfSignature.VerifySignature() 方法檢查 PDF 簽名的有效性
- 輸出結果。
C#示例代碼:
using Spire.Pdf; using Spire.Pdf.Security; using Spire.Pdf.Widget; namespace VerifySignature { class Program { static void Main(string[] args) { //載入PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("PDF簽名.pdf"); //獲取PDF文件中的表單欄位集合 PdfFormWidget pdfFormWidget = (PdfFormWidget)pdf.Form; PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.FieldsWidget; //遍歷所有欄位 for (int i = 0; i < pdfFormFieldWidgetCollection.Count; i++) { //獲取簽名欄位 if (pdfFormFieldWidgetCollection[i] is PdfSignatureFieldWidget) { PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget)pdfFormFieldWidgetCollection[i]; //獲取PDF簽名 PdfSignature signature = signatureFieldWidget.Signature; //驗證簽名有效性 bool valid = signature.VerifySignature(); if (valid) { Console.WriteLine("有效簽名"); } else { Console.WriteLine("無效簽名"); } } } } } }
驗證結果:
使用C# 驗證PDF文檔是否被修改
驗證PDF文檔是否被修改也能間接驗證電子簽名的有效性,如果在簽名之後文檔內容被修改,那麼PDF簽名也將失效。通過使用 PdfSignature 類提供的 VerifyDocModified() 方法可以快速驗證PDF文檔的完整性。
主要步驟:
- 創建 PdfDocument 對象,並使用 LoadFromFile() 方法載入 PDF 文件
- 獲取 PDF 文件中的表單,然後使用獲取表單欄位集合。
- 遍歷所有欄位,並判斷當前欄位是否為簽名欄位(PdfSignatureFieldWidget 類)。
- 如果是簽名欄位,則通過 PdfSignatureFieldWidget.Signature 屬性獲取該PDF 簽名。
- 使用 PdfSignature.VerifyDocModified() 方法驗證簽名後文檔是否被修改。
- 輸出結果。
C#示例代碼:
using Spire.Pdf; using Spire.Pdf.Security; using Spire.Pdf.Widget; namespace CheckSignature { class Program { static void Main(string[] args) { //載入PDF文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("PDF簽名.pdf"); //獲取PDF文件中的表單欄位集合 PdfFormWidget pdfFormWidget = (PdfFormWidget)pdf.Form; PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.FieldsWidget; //遍歷所有欄位 for (int i = 0; i < pdfFormFieldWidgetCollection.Count; i++) { //獲取簽名欄位 if (pdfFormFieldWidgetCollection[i] is PdfSignatureFieldWidget) { PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget)pdfFormFieldWidgetCollection[i]; //獲取PDF簽名 PdfSignature signature = signatureFieldWidget.Signature; //驗證簽名後PDF文檔是否被修改 bool modified = signature.VerifyDocModified(); if (modified) { Console.WriteLine("文檔被修改了。"); } else { Console.WriteLine("文檔未被修改。"); } } } } } }
驗證結果:
通過這些步驟和示例代碼,我們可以確保PDF文檔的完整性和電子簽名的有效性,從而在處理重要文件時提供額外的安全保障。
相關文章推薦: