Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menandatangani PDF Secara Digital Menggunakan JavaScript Tanpa Akses Kunci Terus?

Bagaimanakah Saya Boleh Menandatangani PDF Secara Digital Menggunakan JavaScript Tanpa Akses Kunci Terus?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 22:50:11971semak imbas

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

Tandatangan PDF dengan JavaScript Biasa

Cabaran:

Menandatangani dokumen PDF secara digital menggunakan API WebCrypto menimbulkan cabaran, kerana API semasa tidak membenarkan akses kepada storan kunci atau kripto tempatan secara langsung peranti.

Penyelesaian:

Untuk memintas pengehadan ini, anda disyorkan untuk:

  1. Membuat Cincang PDF: Hasilkan cincangan fail PDF dan bukannya menghantar keseluruhan dokumen ke penyemak imbas.
  2. Gunakan Sambungan Penyemak Imbas: Pasang sambungan penyemak imbas seperti Signer.Digital untuk mengakses stor kunci tempatan (cth., gedung Windows Certificate atau PKCS#11 di Linux ).
  3. Tandatangan Hash: Gunakan API sambungan untuk tandatangani PDF yang dicincang menggunakan kunci peribadi yang diperoleh daripada stor kunci tempatan.
  4. Terima Tandatangan: Sambungan penyemak imbas akan mengembalikan tandatangan dalam format yang sesuai (cth., PKCS7).
  5. Suntikan Tandatangan ke dalam PDF: Di bahagian pelayan, gunakan perpustakaan yang sesuai (atau yang disediakan oleh Signer.Digital) untuk menyuntik semula tandatangan ke dalam fail PDF asal.

Signer.Digital Extension:

Pelanjutan penyemak imbas Signer.Digital menyediakan yang diperlukan fungsi untuk melaksanakan proses menandatangani sebagai berikut:

  • Fungsi: SignerDigital.signPdfHash(hash, certThumbPrint, hashingAlgo)
  • Parameter:

    cincang: Cincang PDF dalam rentetan berkod Base64
    • certThumbPrint: Cap ibu jari sijil untuk digunakan untuk menandatangani
    • pencincanganAlgo: Algoritma yang digunakan untuk mencincang PDF (cth., "SHA256")
Contoh:

// 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
   }
);
Nota:

Kunci peribadi disimpan secara setempat dalam tetapan sijil penyemak imbas.
  • Pada masa hadapan, dengan kemajuan API WebCrypto, akses terus kepada storan kunci mungkin menjadi mungkin, menghapuskan keperluan untuk sambungan penyemak imbas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menandatangani PDF Secara Digital Menggunakan JavaScript Tanpa Akses Kunci Terus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn