使用纯 JavaScript 和 WebCrypto API 签署 PDF
WebCrypto API 随着 Chrome 和 Firefox 等流行浏览器的支持不断增加,提供了引人注目的功能对 PDF 文档进行数字签名的解决方案。虽然 API 支持签名操作,但它在访问本地密钥存储或利用外部加密设备(例如 USB/智能卡)方面面临限制。
为了解决这些挑战,一种实用的方法是创建 PDF 的哈希值文件进行签名,而不是将整个文件发送到浏览器。然后,该哈希值被发送到浏览器,其中 JavaScript 可以利用 WebCrypto API 调用浏览器扩展。浏览器扩展反过来与本地应用程序或加密设备(在幕后运行)交互以执行实际的签名操作。签名后,签名将返回到浏览器,然后发送到服务器以嵌入到原始 PDF 中。
为了方便的基于浏览器的签名方案,Signer.Digital 提供免费的浏览器扩展和 .NET 库与服务器端进程集成。该扩展有助于使用用户的本地密钥库、USB 令牌或智能卡进行安全哈希签名。该扩展程序的 JavaScript API 允许与本地签名主机轻松交互:
//Calling the extension method to sign the hash SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256") .then( function (signDataResp) { //Send signed data to server }, function (errmsg) { //Handle error message from extension } );
成功签名后,浏览器扩展程序返回一个 base64 编码的 PKCS7 签名,可用于使用以下命令将签名注入 PDF适当的图书馆。如果出现错误,该扩展程序会提供有意义的错误消息。
Signer.Digital 在浏览器内提供全面的数字签名解决方案。该方法可确保稳健且安全的签名,而不会泄露用户的私钥或将敏感的 PDF 内容暴露给公共互联网。
以上是如何使用纯 JavaScript 和浏览器扩展对 PDF 进行数字签名?的详细内容。更多信息请关注PHP中文网其他相关文章!