C# 獲取PDF中的數字簽名證書
中的加數字簽名是對文件權威性的有效證明。我們在向PDF文件新增簽名時,需要準備可信任的簽名證書。同時,對已有的簽名,可驗證簽名是否有效,也可以獲取文件中的簽名證書資訊。下面,以C#程式碼示例展示如何來獲取PDF中的數字簽名證書資訊。
環境準備
需要在程式中匯入Spire.Pdf.dll。這裡以一個控制檯應用程式為例,引用dll可選擇以下兩種方法中的任意一種即可:
方法1:開啟“解決方案資源管理器”,滑鼠右鍵點選“引用”,“新增引用”:
選擇“瀏覽”,“瀏覽”,並找到本地路徑下的Spire.Pdf.dll檔案:
新增到引用列表後,勾選,點選“OK”完成引用:
方法2:通過NuGet安裝。
或者通過PM控制檯安裝:Install-Package Spire.PDF -Version 7.11.1
實現讀取簽名的證書,本次程式碼主要分為以下步驟:
1. 例項化 PdfDocument類的物件,並通過 PdfDocument. LoadFromFile(string filename)方法載入PDF文件。
2. 通過 PdfFormWidget. FieldsWidget屬性獲取 PdfFormFieldWidgetCollection類的域集合
3. 通過for迴圈遍歷所有域,並判斷集合中的域是否為 PdfSignatureFieldWidget類的簽名域。
4. 獲取PdfSignatureFieldWidget類的簽名域後,通過其提供的PdfSignatureFieldWidget. Signature.Certificate屬性獲取簽名證書,以及該屬性下列舉的20餘種方法(如下圖)來獲取證書的詳細資訊。
(本次程式碼中僅簡單列舉使用了2種方法獲取證書資訊。)
5. 最後通過控制檯輸出獲取的證書資訊。
C#
using Spire.Pdf; using Spire.Pdf.Widget; using System; namespace GetCertificateInfo { class Program { static void Main(string[] args) { //例項化PdfDocument類的物件,並載入PDF文件 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("test.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]; //獲取簽名證書 string certificateInfo = signatureFieldWidget.Signature.Certificate.ToString(); //獲取證書格式 string format = signatureFieldWidget.Signature.Certificate.GetFormat(); Console.WriteLine(certificateInfo+ "\n"+ "[CertificateFormat]\n " + format ); } } Console.ReadKey(); } } }
VB.NET
Imports Spire.Pdf Imports Spire.Pdf.Widget Namespace GetCertificateInfo Class Program Private Shared Sub Main(args As String()) '例項化PdfDocument類的物件,並載入PDF文件 Dim pdf As New PdfDocument() pdf.LoadFromFile("test.pdf") '獲取域集合 Dim pdfFormWidget As PdfFormWidget = DirectCast(pdf.Form, PdfFormWidget) Dim pdfFormFieldWidgetCollection As PdfFormFieldWidgetCollection = pdfFormWidget.FieldsWidget '遍歷域 For i As Integer = 0 To pdfFormFieldWidgetCollection.Count - 1 '判定是否為簽名域 If TypeOf pdfFormFieldWidgetCollection(i) Is PdfSignatureFieldWidget Then '獲取簽名域 Dim signatureFieldWidget As PdfSignatureFieldWidget = DirectCast(pdfFormFieldWidgetCollection(i), PdfSignatureFieldWidget) '獲取簽名證書 Dim certificateInfo As String = signatureFieldWidget.Signature.Certificate.ToString() '獲取證書格式 Dim format As String = signatureFieldWidget.Signature.Certificate.GetFormat() Console.WriteLine(Convert.ToString((certificateInfo & Convert.ToString(vbLf)) + "[CertificateFormat]" & vbLf & " ") & format) End If Next Console.ReadKey() End Sub End Class End Namespace
讀取結果:
—End—
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31499788/viewspace-2841794/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java 獲取PDF數字簽名證照資訊Java
- FDA ESG的數字簽名證書是什麼?怎麼獲取FDA ESG 數字證書?
- Java 新增、驗證PDF 數字簽名Java
- PDF簽名證書的基本特徵以及作用特徵
- 安全基礎:數字信封、數字簽名、數字證書(加簽驗籤,加密解密)加密解密
- 建立自簽名根證書-中間證書。
- C# / vb.net 給PDF 新增視覺化和不可見數字簽名C#視覺化
- 什麼是自簽名證書?自簽名SSL證書的優缺點?
- win10 禁止驗證數字簽名方法 win10 如何禁用數字簽名Win10
- 文件數字簽名工作原理是什麼?文件簽名有什麼好處?哪些行業使用文件簽名證書?行業
- 程式碼簽名證書
- 自簽名ssl證書
- thawte程式碼簽名證書和Comodo程式碼簽名證書區別
- ios簽名證書:什麼是證書?iOS
- 自簽名證書 nginx tomcatNginxTomcat
- openssl生成自簽名證書
- iOS證書籤名機制&重簽名&防止重簽名iOS
- 公鑰加密、數字簽名、訊息認證加密
- EV程式碼簽名證書和標準程式碼簽名證書有何不同?
- 什麼是自簽名SSL證書?自簽名證書有哪些安全隱患?
- java和C#使用證照對引數簽名、加密JavaC#加密
- c#獲取word檔案頁數、字數C#
- 程式碼簽名證書與SSL證書區別
- DigiCert EV 程式碼簽名證書
- 自簽名SSL證書安全嗎?
- 使用mkcert建立自簽名證書mkcert
- Xamarin Android使用自簽名證書Android
- 對稱加密、非對稱加密、RSA、訊息摘要、數字簽名、數字證書與HTTPS簡介加密HTTP
- 普通OV版程式碼簽名證書,與EV程式碼簽名證書的作用以及區別
- 大話數字簽名
- 蘋果簽名證書:共享證書和獨享證書找不同蘋果
- Apache 配置https 自簽名證書 或者 購賣證書ApacheHTTP
- C#獲取日期的星期名稱C#
- C#/VB.NET 給Excel新增、刪除數字簽名C#Excel
- 如何關閉win10的數字簽名_win10禁用數字簽名的方法Win10
- WHQL認證如何給驅動程式做數字簽名
- ios簽名證書簡單介紹iOS
- 使用OpenSSL生成自簽名SSL證書