欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C#驗證PDF數(shù)字簽名有效性的方法示例

 更新時間:2024年07月03日 09:37:08   作者:Eiceblue  
數(shù)字簽名作為PDF文檔中的重要安全機制,不僅能夠驗證文件的來源,還能確保文件內(nèi)容在傳輸過程中未被篡改,本文將詳細介紹如何使用免費.NET控件通過C#驗證PDF簽名的有效性以及驗證PDF文檔是否被修改,需要的朋友可以參考下

引言

數(shù)字簽名作為PDF文檔中的重要安全機制,不僅能夠驗證文件的來源,還能確保文件內(nèi)容在傳輸過程中未被篡改。然而,如何正確驗證PDF文件的數(shù)字簽名,是確保文件完整性和可信度的關鍵。本文將詳細介紹如何使用免費.NET控件通過C#驗證PDF簽名的有效性以及驗證PDF文檔是否被修改。

使用C# 驗證PDF數(shù)字簽名有效性

Free Spire.PDF 提供了 PdfSignature 類用于代表PDF文檔中的數(shù)字簽名,要驗證簽名的有效性可以用該類的 VerifySignature() 方法。

主要步驟:

  1. 創(chuàng)建PdfDocument 對象,并使用 LoadFromFile() 方法加載 PDF 文件。
  2. 獲取 PDF 文件中的表單,然后使用獲取表單字段集合。
  3. 遍歷所有字段,并判斷當前字段是否為簽名字段(PdfSignatureFieldWidget 類)。
  4. 如果是簽名字段,則通過 PdfSignatureFieldWidget.Signature 屬性獲取該PDF 簽名。
  5. 使用 PdfSignature.VerifySignature() 方法檢查 PDF 簽名的有效性
  6. 輸出結(jié)果。

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("無效簽名");
                    }
                }
            }
        }
    }
}

驗證結(jié)果:

使用C# 驗證PDF文檔是否被修改

驗證PDF文檔是否被修改也能間接驗證電子簽名的有效性,如果在簽名之后文檔內(nèi)容被修改,那么PDF簽名也將失效。通過使用 PdfSignature 類提供的 VerifyDocModified() 方法可以快速驗證PDF文檔的完整性。

主要步驟:

  1. 創(chuàng)建 PdfDocument 對象,并使用 LoadFromFile() 方法加載 PDF 文件
  2. 獲取 PDF 文件中的表單,然后使用獲取表單字段集合。
  3. 遍歷所有字段,并判斷當前字段是否為簽名字段(PdfSignatureFieldWidget 類)。
  4. 如果是簽名字段,則通過 PdfSignatureFieldWidget.Signature 屬性獲取該PDF 簽名。
  5. 使用 PdfSignature.VerifyDocModified() 方法驗證簽名后文檔是否被修改。
  6. 輸出結(jié)果。

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("文檔未被修改。");
                    }
                }
            }
        }
    }
}

驗證結(jié)果:

通過這些步驟和示例代碼,我們可以確保PDF文檔的完整性和電子簽名的有效性,從而在處理重要文件時提供額外的安全保障。

以上就是使用C#驗證PDF數(shù)字簽名有效性的方法示例的詳細內(nèi)容,更多關于C#驗證PDF數(shù)字簽名有效性的資料請關注腳本之家其它相關文章!

相關文章

  • C#如何獲取當前路徑的父路徑

    C#如何獲取當前路徑的父路徑

    這篇文章主要介紹了C#如何獲取當前路徑的父路徑問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C#中abstract的用法詳解

    C#中abstract的用法詳解

    abstract可以用來修飾類,方法,屬性,索引器和時間,這里不包括字段. 使用abstrac修飾的類,該類只能作為其他類的基類,不能實例化,而且abstract修飾的成員在派生類中必須全部實現(xiàn),不允許部分實現(xiàn),否則編譯異常
    2016-12-12
  • c# 線程定時器 System.Threading.Timer的使用

    c# 線程定時器 System.Threading.Timer的使用

    本文主要介紹了c# 線程定時器 System.Threading.Timer的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • C#利用System.Threading.Thread.Sleep即時輸出信息的詳解

    C#利用System.Threading.Thread.Sleep即時輸出信息的詳解

    本篇文章是對C#利用System.Threading.Thread.Sleep即時輸出信息進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • C#?winform實現(xiàn)中英文切換功能的四種方式

    C#?winform實現(xiàn)中英文切換功能的四種方式

    這篇文章主要介紹了在C#?winform應用程序中實現(xiàn)中英文切換功能的四種方式,資源文件(Resources),本地化(Localization),動態(tài)設置控件字體和切換語言環(huán)境這四種方式,下面將詳細介紹每種方式及其具體實現(xiàn),并討論它們的優(yōu)缺點,需要的朋友可以參考下
    2024-04-04
  • C#實現(xiàn)給圖片加水印的方法

    C#實現(xiàn)給圖片加水印的方法

    這篇文章主要介紹了C#實現(xiàn)給圖片加水印的方法,結(jié)合完整實例形式分析了C#常見的圖片水印操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2016-02-02
  • C#將部分Controls數(shù)據(jù)導入對象并存入ini中的操作方法

    C#將部分Controls數(shù)據(jù)導入對象并存入ini中的操作方法

    在Winform設計中,經(jīng)常需要將控件數(shù)據(jù)導出到屬性或字段中,本文詳細介紹了如何優(yōu)化這一過程,包括控件和屬性的遍歷,以及使用FieldInfo的getSet函數(shù)和Ini類庫來實現(xiàn)數(shù)據(jù)的有效存儲和轉(zhuǎn)換,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • ftp服務器搭建部署與C#實現(xiàn)ftp文件的上傳的示例

    ftp服務器搭建部署與C#實現(xiàn)ftp文件的上傳的示例

    本文主要介紹了ftp服務器搭建部署與C#實現(xiàn)ftp文件的上傳的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 詳解WPF中的對象資源

    詳解WPF中的對象資源

    這篇文章主要介紹了WPF中對象資源的相關資料,幫助大家更好的理解和學習使用WPF,感興趣的朋友可以了解下
    2021-04-04
  • C#異步原理詳情

    C#異步原理詳情

    這篇文章主要介紹了C#異步原理,C#異步在C#5便發(fā)布了,是利用async關鍵字和await表達式表達的異步操作,下面文章下邊將詳細向大家介紹C#異步原理,感興趣得小伙伴可以參考一下
    2021-10-10

最新評論