簡體   English   中英

如何使用itextsharp將數字簽名圖像或其字節[]保存到數據庫中?

[英]How to save digital signature image or its byte[] in to database using itextsharp?

我正在使用pdf表單,它包含一個數字簽名字段。 當我們單擊數字簽名字段時,它要求選擇一個有效的簽名,然后要求保存文件。 我的要求是根據用戶ID將數字簽名保存到db。 我在pdf表單中有一個按鈕,當我們單擊該按鈕時,它將重定向到處理程序文件。 該處理程序類以httpcontext形式獲取數據。 在這種情況下,提交按鈕后,除數字簽名字段外,所有其他字段數據均到達處理程序。

有什么方法可以將數字簽名數據讀取到處理程序?

提前致謝。

首先,

該處理程序類以httpcontext形式獲取數據。 在這種情況下,提交按鈕后,除數字簽名字段外,所有其他字段數據均到達處理程序。

聽起來您的PDF表單提交操作已設置ExportFormat標志。 在這種情況下, 不會發送數字簽名。 您要么必須設置SubmitPDF標志, 否則將導致提交包含所有更改的整個文檔,或者這兩個標志均未設置(導致提交FDF),而是設置了IncludeAppendSaves標志,這將導致已提交的FDF文件包括內容。基礎PDF文檔的所有增量更新。

在服務器端,需要完整的PDF才能繼續使用iText高級方法,對於完全符合您要求的SubmitPDF ,對於IncludeAppendSaves,您必須將原始PDF與增量更新結合起來。

現在您可以提取簽名數據。

當您使用名稱iTextSharp和標記時,我假設您使用的是5.5.x版本,而不是用於.Net的7.x版本。

只要有PDF,就可以使用用於讀取文件的PdfReaderAcroFields屬性的GetSignatureNames()方法確定其簽名的簽名字段:

PdfReader reader = new PdfReader(path);
AcroFields fields = reader.AcroFields;
List<String> names = fields.GetSignatureNames();

對於每個此類字段,您都可以從該字段的簽名字典的Contents條目中檢索實際的簽名字節:

byte[] signatureBytes = fields.GetSignatureDictionary(name).GetAsString(PdfName.CONTENTS).GetOriginalBytes();

在可互操作的ISO 32000-1或PAdES / ISO 32000-2簽名的情況下,這些字節將包含相當裸露的PKCS#1簽名結構或CMS簽名容器。 為了真正理解這些結構,通常還需要簽名字典中的其他信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM