首頁 >web前端 >js教程 >如何使用 JavaScript 和 WebCrypto API 安全地對 PDF 進行數位簽章?

如何使用 JavaScript 和 WebCrypto API 安全地對 PDF 進行數位簽章?

Barbara Streisand
Barbara Streisand原創
2024-11-26 12:22:15389瀏覽

How Can I Digitally Sign PDFs Using JavaScript and WebCrypto API Securely?

使用純 JavaScript 和 WebCrypto API 簽署 PDF

使用 WebCrypto API 和純 JavaScript 對 PDF 文件進行數位簽章存在一定的挑戰。雖然 WebCrypto API 已經發展並獲得了 Chrome 和 Firefox 等瀏覽器的支持,但它缺乏對金鑰儲存或本機加密設備的直接存取。

為了安全 PDF 簽名,不建議將整個 PDF 檔案傳送到瀏覽器或 API 伺服器。建議的方法是建立 PDF 的雜湊值進行簽署並僅將雜湊值傳送到瀏覽器。

基於瀏覽器的簽章註意事項

為了解決 WebCrypto API 在存取本機金鑰庫方面的限制, Signer.Digital 等瀏覽器擴充功能提供了一個解決方案。該擴充功能彌補了瀏覽器和用戶系統上運行的本機主機應用程式之間的差距。這允許存取本地密鑰儲存、加密 USB 或智慧卡。

使用 Signer.Digital 擴展,JavaScript 程式碼可以呼叫方法來簽署文件的雜湊值。然後,主機應用程式透過 Microsoft 憑證儲存(在 Windows 上)或 PKCS#11 程式庫(在 Linux 上)利用使用者的憑證來取得簽章。此擴充功能會傳回一個 Base64 編碼的 pkcs7 簽名,可以將其註入到 PDF 中。

瀏覽器擴展主機函數

瀏覽器中的JavaScript 代碼可以從Signer.Digital 瀏覽器調用以下方法擴展主機:

  • signPdfHash(hash, certThumbPrint , hashAlgorithm)
  • signHashCAdESBr(hash, certThumbPrint, hashAlgorithm)(適用於ICP-巴西簽名)
  • signCAdESEg(hash, certThumbPrint, hashAlgorithm)(適用於埃及ITIDA CAdES-BESES簽名)
這些方法使Java 簽字)

>這些方法使?從本機金鑰儲存和加密裝置取得簽名,而不會影響私鑰的安全性。

以上是如何使用 JavaScript 和 WebCrypto API 安全地對 PDF 進行數位簽章?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn