首頁 > web前端 > js教程 > 如何在沒有直接金鑰存取的情況下使用 JavaScript 對 PDF 進行數位簽章?

如何在沒有直接金鑰存取的情況下使用 JavaScript 對 PDF 進行數位簽章?

Mary-Kate Olsen
發布: 2024-12-03 22:50:11
原創
970 人瀏覽過

How Can I Digitally Sign a PDF Using JavaScript Without Direct Key Access?

使用純JavaScript 簽署PDF

挑戰:

使用WebCrypto API 對PDF 文件進行數位簽章提出了挑戰,因為當前的API不允許直接存取金鑰儲存或本地加密

解決方案:

要規避此限制,建議:

  1. 建立PDF 的雜湊: 產生PDF 檔案的雜湊值,而不是將整個文件傳送到瀏覽器。
  2. 利用瀏覽器擴充: 安裝瀏覽器擴展,例如Signer.Digital 來存取本機金鑰庫(例如Windows 憑證庫或Linux 上的PKCS#11 ) ).
  3. 簽署哈希:使用擴充程式的API使用從本機金鑰庫取得的私鑰對雜湊 PDF 進行簽署。
  4. 接收簽章:瀏覽器擴充功能將以適當的格式傳回簽章(例如 PKCS7)。
  5. 將簽章插入 PDF: 在伺服器端,使用適當的函式庫(或由Signer.Digital)將簽章重新註入原始 PDF 檔案中。

Signer.Digital 擴充功能:

Signer.Digital 瀏覽器擴充功能提供了必要的執行簽署流程的功能如下:

  • 函數:
  • SignerDigital.signPdfHash(hash, certThumbPrint, hashingAlgo)
  • 參數:

    • 哈希: Base64 編碼字串中 PDF的雜湊值
    • certThumbPrint:用於簽署的憑證指紋
    • hashingAlgo:用於對 PDF 進行雜湊處理的演算法(例如, "SHA256")

範例:

// Assuming hash is a Base64-encoded PDF hash
SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256")
.then(
   function (signDataResp) {
      // Send signDataResp (contains Base64 PKCS7 signature) to server
   },
   function (errmsg) {
      // Handle error
   }
);
登入後複製

註:

  • 註:
私鑰儲存在本機的憑證設定中瀏覽器。 將來,隨著 WebCrypto API 的進步,直接存取金鑰儲存可能成為可能,從而無需瀏覽器擴充功能。

以上是如何在沒有直接金鑰存取的情況下使用 JavaScript 對 PDF 進行數位簽章?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板