最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#代碼實(shí)現(xiàn)在Word文檔中添加數(shù)字簽名

 更新時(shí)間:2026年05月17日 09:31:53   作者:2501_93070778  
數(shù)字簽名可用于確認(rèn)數(shù)字文檔的來(lái)源真實(shí)性,并確保文檔在傳輸過(guò)程中未被篡改,本文將介紹如何在 C# 和 VB.NET 中為 Word 文檔添加數(shù)字簽名,感興趣的小伙伴可以了解下

數(shù)字簽名可用于確認(rèn)數(shù)字文檔的來(lái)源真實(shí)性,并確保文檔在傳輸過(guò)程中未被篡改。使用數(shù)字簽名能夠減少紙質(zhì)文件的傳遞需求,同時(shí)降低文檔打印、郵寄和存儲(chǔ)的成本,從而節(jié)省時(shí)間和費(fèi)用。本文將介紹如何在 C# 和 VB.NET 中為 Word 文檔添加數(shù)字簽名。

安裝相關(guān)組件

在開(kāi)始之前,需要先在 .NET 項(xiàng)目中添加所需的 DLL 引用。您可以通過(guò)下載安裝包手動(dòng)添加 DLL 文件,也可以直接通過(guò) NuGet 進(jìn)行安裝。

PM> Install-Package Spire.Doc

在 C#、VB.NET 中為 Word 添加數(shù)字簽名

實(shí)現(xiàn)過(guò)程如下:

  • 創(chuàng)建 Document 對(duì)象。
  • 使用 Document.LoadFromFile() 方法加載 Word 文檔。
  • 指定 .pfx 證書(shū)文件的路徑以及密碼。
  • 在保存文檔時(shí),通過(guò) Document.SaveToFile(string fileName, FileFormat fileFormat, string certificatePath, string securePassword) 方法為文檔添加數(shù)字簽名。

此外,還可以使用以下方法對(duì) Word 文檔進(jìn)行數(shù)字簽名:

public void SaveToFile(string fileName, FileFormat fileFormat, byte[] certificateData, string securePassword);
public void SaveToStream(Stream stream, FileFormat fileFormat, byte[] certificateData, string securePassword);
public void SaveToStream(Stream stream, FileFormat fileFormat, string certificatePath, string securePassword);
public static byte[] Document.Sign(Stream sourceStream, byte[] certificateData, string securePassword);
public static byte[] Document.Sign(Stream sourceStream, string certificatePath, string securePassword);

完整示例代碼

完整代碼如下:

using Spire.Doc;
namespace DigitallySignWord
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Document 對(duì)象
            Document doc = new Document();
            // 加載 Word 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.docx");
            // 指定數(shù)字證書(shū)路徑
            string certificatePath = "C:\\Users\\Administrator\\Desktop\\gary.pfx";
            // 指定證書(shū)密碼
            string password = "e-iceblue";
            // 在保存為 .docx 文件時(shí)為文檔添加數(shù)字簽名
            doc.SaveToFile("AddDigitalSignature.docx", FileFormat.Docx2013, certificatePath, password);
        }
    }
}

知識(shí)擴(kuò)展

給 Word 文檔添加數(shù)字簽名,在 C# 中有多種實(shí)現(xiàn)方式。以下是幾種主流方案的完整代碼示例和使用說(shuō)明。

數(shù)字簽名與數(shù)字證書(shū)

在開(kāi)始編碼之前,需要理解兩個(gè)基礎(chǔ)概念:

  • 數(shù)字簽名:一種電子形式的簽名,用于驗(yàn)證簽名者的身份并確保文檔未被篡改。
  • 數(shù)字證書(shū)(.pfx 文件):創(chuàng)建數(shù)字簽名的關(guān)鍵,包含公鑰和簽名者的身份信息,供他人驗(yàn)證簽名真?zhèn)巍?/li>

你需要準(zhǔn)備一個(gè)有效的 .pfx 證書(shū)文件及其密碼才能進(jìn)行數(shù)字簽名。若無(wú)可用證書(shū),可通過(guò) I love PDF 獲取權(quán)威 CA 簽發(fā)的證書(shū),或使用 OpenSSL 生成自簽名證書(shū)用于開(kāi)發(fā)測(cè)試。

方案一:Aspose.Words for .NET(推薦)

Aspose.Words 是功能最全面的商業(yè)庫(kù),支持基礎(chǔ)簽名、簽名行添加、批量簽名等多種場(chǎng)景。

步驟 1:安裝 NuGet 包

在 Visual Studio 的“程序包管理器控制臺(tái)”中執(zhí)行:

Install-Package Aspose.Words

步驟 2:導(dǎo)入必要的命名空間

using Aspose.Words;
using Aspose.Words.Saving;
using System.Security.Cryptography.X509Certificates;

場(chǎng)景 A:為現(xiàn)有 Word 文檔添加數(shù)字簽名(基礎(chǔ)版)

using Aspose.Words;
using Aspose.Words.Saving;
string dataDir = @"C:\YourDocumentDirectory\";
// 加載數(shù)字證書(shū)
CertificateHolder certHolder = CertificateHolder.Create(dataDir + "morzal.pfx", "aw");
// 加載待簽名的 Word 文檔
Document doc = new Document(dataDir + "Digitally signed.docx");
// 對(duì)文檔進(jìn)行數(shù)字簽名并保存
DigitalSignatureUtil.Sign(dataDir + "Digitally signed.docx", 
                          dataDir + "Document.Signed.docx", 
                          certHolder);

代碼說(shuō)明:DigitalSignatureUtil.Sign 的第一個(gè)參數(shù)是原始文檔路徑,第二個(gè)是簽名后的輸出路徑,第三個(gè)是證書(shū)持有者。

場(chǎng)景 B:為文檔添加簽名行并簽名(可視化簽名)

如果希望在文檔中創(chuàng)建一個(gè)可視化的簽名行區(qū)域,可以使用以下代碼:

using Aspose.Words;
using Aspose.Words.Drawing;
using Aspose.Words.Signing;
string dataDir = @"C:\YourDocumentDirectory\";
// 創(chuàng)建新文檔
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// 插入簽名行
SignatureLine signatureLine = builder.InsertSignatureLine(new SignatureLineOptions()).SignatureLine;
// 保存帶有簽名行的中間文檔
doc.Save(dataDir + "SignDocuments.SignatureLine.docx");
// 配置簽名選項(xiàng)
SignOptions signOptions = new SignOptions
{
    SignatureLineId = signatureLine.Id,
    SignatureLineImage = File.ReadAllBytes(dataDir + "signature_image.png")  // 可選簽名圖像
};
// 加載證書(shū)
CertificateHolder certHolder = CertificateHolder.Create(dataDir + "morzal.pfx", "aw");
// 對(duì)包含簽名行的文檔進(jìn)行數(shù)字簽名
DigitalSignatureUtil.Sign(dataDir + "SignDocuments.SignatureLine.docx",
                          dataDir + "SignDocuments.NewSignatureLine.docx",
                          certHolder, signOptions);

場(chǎng)景 C:批量簽名多個(gè)文檔

string[] documents = { "doc1.docx", "doc2.docx", "doc3.docx" };
string certPath = @"C:\Cert\mycert.pfx";
string password = "your_password";
string outputDir = @"C:\SignedOutput\";
CertificateHolder certHolder = CertificateHolder.Create(certPath, password);
foreach (string docName in documents)
{
    string inputPath = Path.Combine(dataDir, docName);
    string outputPath = Path.Combine(outputDir, "signed_" + docName);
    DigitalSignatureUtil.Sign(inputPath, outputPath, certHolder);
    Console.WriteLine($"已簽名: {docName}");
}

方案二:Spire.Doc for .NET

Spire.Doc 是國(guó)內(nèi)團(tuán)隊(duì)開(kāi)發(fā)的高性能 Word 文檔處理庫(kù),無(wú)需安裝 Microsoft Office,且原生支持 WPS 格式。

步驟 1:安裝 NuGet 包

Install-Package Spire.Doc

步驟 2:基礎(chǔ)簽名代碼

using Spire.Doc;
namespace DigitallySignWord
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 Document 對(duì)象
            Document doc = new Document();
            // 加載 Word 文檔
            doc.LoadFromFile(@"C:\sample.docx");
            // 指定 .pfx 證書(shū)路徑和密碼
            string certificatePath = @"C:\cert\gary.pfx";
            string password = "your_cert_password";
            // 保存文檔并添加數(shù)字簽名
            doc.SaveToFile("AddDigitalSignature.docx", 
                           FileFormat.Docx2013, 
                           certificatePath, 
                           password);
        }
    }
}

更多簽名方式(SaveToStream / Sign 靜態(tài)方法)

Spire.Doc 提供多種簽名方式:

方式一:保存到流(SaveToStream)

Document doc = new Document("sample.docx");
FileStream fs = new FileStream("output.docx", FileMode.Create);
doc.SaveToStream(fs, FileFormat.Docx2013, "gary.pfx", "e-iceblue");
fs.Flush();

方式二:靜態(tài) Sign 方法

FileStream fs = File.OpenRead("sample.docx");
byte[] result = Document.Sign(fs, "gary.pfx", "e-iceblue");
File.WriteAllBytes("AddDigitalSignature.docx", result);

方案三:GroupDocs.Signature for .NET

GroupDocs.Signature 支持超過(guò) 60 種文件格式,提供了更豐富的簽名選項(xiàng)(文本、圖像、二維碼、條形碼等)。

步驟 1:安裝 NuGet 包

dotnet add package GroupDocs.Signature

步驟 2:基礎(chǔ)簽名代碼

using GroupDocs.Signature;
using GroupDocs.Signature.Options;
using (Signature signature = new Signature("input.docx"))
{
    DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
    {
        Password = "1234567890",                     // 證書(shū)密碼
        PageNumber = 1,                               // 簽名所在頁(yè)碼
        Left = 50,                                    // 距左側(cè)距離(像素)
        Top = 50,                                     // 距頂部距離(像素)
        Reason = "Document security check",           // 簽名原因
        Contact = "John Smith",                       // 聯(lián)系人信息
        Location = "Office D.W."                      // 簽名地點(diǎn)
    };
    SignResult result = signature.Sign("output.docx", options);
}

場(chǎng)景 B:帶可視化呈現(xiàn)的簽名

DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
    Password = "1234567890",
    Reason = "Security issue",
    Contact = "John Smith",
    Location = "Office D.W.",
    ImageFilePath = "signature.png",                  // 指定簽名圖像
    AllPages = true,                                  // 在所有頁(yè)面上顯示
    VerticalAlignment = VerticalAlignment.Center,     // 垂直對(duì)齊方式
    HorizontalAlignment = HorizontalAlignment.Left,   // 水平對(duì)齊方式
    Width = 60,                                       // 簽名寬度
    Height = 80,                                      // 簽名高度
    Margin = new Padding() { Bottom = 10, Right = 10 }
};

方案四:GemBox.Document(輕量級(jí))

GemBox.Document 是一個(gè)輕量級(jí)的高性能庫(kù),API 設(shè)計(jì)簡(jiǎn)潔。

步驟 1:安裝 NuGet 包

Install-Package GemBox.Document

步驟 2:基礎(chǔ)簽名代碼

using GemBox.Document;
class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");  // 免費(fèi)版需要 License Key
        var document = DocumentModel.Load("input.docx");
        var saveOptions = new DocxSaveOptions();
        saveOptions.DigitalSignatures.Add(new DocxDigitalSignatureSaveOptions()
        {
            CertificatePath = "certificate.pfx",
            CertificatePassword = "your_password"
        });
        document.Save("signed_output.docx", saveOptions);
    }
}

方案五:Wordize(專門簽名方案)

Wordize 專注于 Word 文檔的數(shù)字簽名功能。

using Wordize.DigitalSignatures;
CertificateHolder certificateHolder = CertificateHolder.Create("certificate.pfx", "Password");
Signer.Sign("input.docx", "output.docx", certificateHolder);

各方案對(duì)比

方案安裝命令核心類/方法特點(diǎn)
Aspose.WordsInstall-Package Aspose.WordsDigitalSignatureUtil.Sign()功能最全,支持簽名行、批量簽名,穩(wěn)定性高
Spire.DocInstall-Package Spire.DocDocument.SaveToFile()國(guó)產(chǎn)庫(kù),兼容 WPS,輕量易用
GroupDocs.Signaturedotnet add package GroupDocs.SignatureSignature.Sign()支持 60+ 種文件格式,簽名類型豐富
GemBox.DocumentInstall-Package GemBox.DocumentDocxSaveOptions.DigitalSignatures輕量級(jí)高性能,API 簡(jiǎn)潔
Wordize官方 SDKSigner.Sign()專門針對(duì) Word 簽名,功能聚焦

總結(jié)

本文介紹了如何在 C# 和 VB.NET 中為 Word 文檔添加數(shù)字簽名。通過(guò)加載 Word 文件、指定 .pfx 數(shù)字證書(shū)及密碼,并在保存文檔時(shí)應(yīng)用簽名,即可快速實(shí)現(xiàn)文檔的身份驗(yàn)證與內(nèi)容保護(hù)。

數(shù)字簽名不僅能夠驗(yàn)證文檔來(lái)源,還能有效防止文檔在傳輸過(guò)程中被篡改,從而提升文檔的安全性和可信度。此外,相關(guān) API 還支持通過(guò)文件流、字節(jié)數(shù)組等多種方式進(jìn)行簽名,能夠滿足不同開(kāi)發(fā)場(chǎng)景下的自動(dòng)化辦公需求。

到此這篇關(guān)于C#代碼實(shí)現(xiàn)在Word文檔中添加數(shù)字簽名的文章就介紹到這了,更多相關(guān)C# Word添加數(shù)字簽名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于C#設(shè)計(jì)一個(gè)雙色球選號(hào)工具

    基于C#設(shè)計(jì)一個(gè)雙色球選號(hào)工具

    這篇文章主要為大家詳細(xì)介紹了如何利用C#設(shè)計(jì)實(shí)現(xiàn)一個(gè)雙色球選號(hào)工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • C#中Invoke和BeginInvoke區(qū)別小結(jié)

    C#中Invoke和BeginInvoke區(qū)別小結(jié)

    有時(shí)候,我們不得不跨線程調(diào)用主界面的控件來(lái)進(jìn)行操作,所以為了方便的解決問(wèn)題,.net為我們提供了Invoke?與beginInvoke,那么Invoke和BeginInvoke區(qū)別在哪,本文就來(lái)詳細(xì)的介紹一下
    2023-08-08
  • C# 使用PictureBox實(shí)現(xiàn)圖片按鈕控件的示例步驟

    C# 使用PictureBox實(shí)現(xiàn)圖片按鈕控件的示例步驟

    這篇文章主要介紹了C# 使用PictureBox實(shí)現(xiàn)圖片按鈕控件的示例步驟,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-02-02
  • 解析XPath語(yǔ)法之在C#中使用XPath的示例詳解

    解析XPath語(yǔ)法之在C#中使用XPath的示例詳解

    本篇文章是對(duì)在C#中使用XPath的示例進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#簡(jiǎn)單創(chuàng)建和刪除目錄的方法

    C#簡(jiǎn)單創(chuàng)建和刪除目錄的方法

    這篇文章主要介紹了C#簡(jiǎn)單創(chuàng)建和刪除目錄的方法,實(shí)例分析了C#使用CreateDirectory及Delete方法簡(jiǎn)單創(chuàng)建及刪除目錄的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-08-08
  • c#中文gbk編碼查詢示例代碼

    c#中文gbk編碼查詢示例代碼

    c#中文gbk編碼查詢示例,大家參考使用吧
    2013-12-12
  • 調(diào)整C#中數(shù)組大小的方法

    調(diào)整C#中數(shù)組大小的方法

    數(shù)組存儲(chǔ)多個(gè)相同類型的一種非常常用的數(shù)據(jù)結(jié)構(gòu),它長(zhǎng)度是固定,也就是數(shù)組一旦創(chuàng)建大小就固定了,C# 數(shù)組不支持動(dòng)態(tài)長(zhǎng)度,那在C#中是否有方法可以調(diào)整數(shù)組大小呢?本文將通過(guò)示例介紹一種調(diào)整一維數(shù)組大小的方法,需要的朋友可以參考下
    2024-06-06
  • 使用c#實(shí)現(xiàn)微信自動(dòng)化功能

    使用c#實(shí)現(xiàn)微信自動(dòng)化功能

    這篇文章主要介紹了使用c#實(shí)現(xiàn)微信自動(dòng)化,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • c#實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能示例分享

    c#實(shí)現(xiàn)斷點(diǎn)續(xù)傳功能示例分享

    這篇文章主要介紹了c#實(shí)現(xiàn)的斷點(diǎn)續(xù)傳功能示例,斷點(diǎn)續(xù)傳就是在上一次下載時(shí)斷開(kāi)的位置開(kāi)始繼續(xù)下載。在HTTP協(xié)議中,可以在請(qǐng)求報(bào)文頭中加入Range段,來(lái)表示客戶機(jī)希望從何處繼續(xù)下載,下面是示例,需要的朋友可以參考下
    2014-03-03
  • C#往線程里傳遞參數(shù)的方法小結(jié)

    C#往線程里傳遞參數(shù)的方法小結(jié)

    這篇文章主要介紹了C#往線程里傳參數(shù)的方法小結(jié)的相關(guān)資料,還給大家簡(jiǎn)單說(shuō)明下傳參的兩種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07

最新評(píng)論

连南| 凌海市| 巴楚县| 株洲县| 武胜县| 寻甸| 福泉市| 谷城县| 砀山县| 威信县| 新丰县| 和田市| 察隅县| 定边县| 鄱阳县| 大厂| 章丘市| 漳州市| 梧州市| 湘潭县| 麦盖提县| 安乡县| 湘阴县| 婺源县| 滦平县| 于田县| 江孜县| 共和县| 江城| 甘肃省| 大姚县| 新疆| 七台河市| 茂名市| 手机| 浑源县| 安岳县| 鹰潭市| 辉南县| 上思县| 洪湖市|