PDF 中的數字簽名可讓您在與利益相關者共享文檔之前對其進行保護。偽造經過數字簽名的 PDF 文檔的內容很容易被檢測和驗證。為了以編程方式對 PDF 文檔進行數字簽名,我將向您展示如何使用 Java 在 PDF 中添加和驗證數字簽名。我們將涵蓋以下與 PDF 中的數字簽名相關的場景。

對 PDF 進行數字簽名的 Java 庫

為了在 PDF 中添加和驗證數字簽名,我們將使用 Aspose.PDF for Java。連同其他 PDF 操作功能,Aspose.PDF for Java 允許您無縫地添加和驗證 PDF 中的數字簽名。您可以下載 API 的 JAR 或將其安裝在基於 Maven 的應用程序中。

存儲庫:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

依賴:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.6</version>
</dependency>

使用 Java 將數字簽名添加到 PDF

以下是使用 Aspose.PDF for Java 向 PDF 文檔添加數字簽名的步驟。

以下代碼示例展示瞭如何使用 Java 對 PDF 進行數字簽名。

// 創建文檔對象
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
Rectangle rect = new Rectangle(100, 600, 400, 100);
// 設置簽名外觀
signature.setSignatureAppearance("aspose-logo.png"); 
// 創建三種簽名類型中的任何一種
signature.certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// 保存數字簽名的 PDF 文件
signature.save("Digitally Signed PDF.pdf");

使用 Java 使用時間戳服務器對 PDF 進行數字簽名

Aspose.PDF for Java 還允許您使用 TimeStamp 服務器向 PDF 添加數字簽名。 TimestampSettings 類用於此目的。以下代碼示例顯示瞭如何使用 Java 將數字簽名添加到帶有 TimeStamp 服務器的 PDF。

// 創建文檔對象
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
pkcs.setTimestampSettings(timestampSettings); 
Rectangle rect = new Rectangle(100, 600, 400, 100);
// 設置簽名外觀
signature.setSignatureAppearance("aspose-logo.png"); 
// 創建三種簽名類型中的任何一種
signature.sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// 保存數字簽名的 PDF 文件
signature.save("Digitally Signed PDF.pdf");

使用 Java 驗證 PDF 中的數字簽名

當您收到經過數字簽名的 PDF 時,您可以很容易地驗證其簽名。以下是驗證數字簽名 PDF 的步驟。

以下代碼示例顯示瞭如何使用 Java 驗證數字簽名的 PDF 文檔。

// 創建 PDF 文件簽名
PdfFileSignature pdfSign = new PdfFileSignature();
// 綁定PDF
pdfSign.bindPdf("Digitally Signed PDF.pdf");
// 使用簽名名稱驗證簽名
if (pdfSign.verifySigned("Signature1"))
{
	if (pdfSign.isCertified()) // Certified?
	{
		if (pdfSign.getAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
		{
			// 做一點事
		}
	} 
}

結論

在本文中,您學習瞭如何使用 Java 向 PDF 添加數字簽名。此外,我們還看到瞭如何在幾個步驟內驗證數字簽名的 PDF 文件。您可以使用 文檔 以及 GitHub 上託管的源代碼示例了解有關 Java PDF API 的更多信息。

也可以看看