JAVA - 如何使用原始 PDF 和单独的 PKCS#7 签名数据创建签名 PDF

标签 java pdf digital-signature pkcs#7

我有一个原始 PDF 文档和作为 PKCS#7 签名数据的单独文件。 我想将这些结合起来创建签名的 PDF 文档,以便它可以在例如 Adob​​e 阅读器中显示它已签名以及谁签署了文档。

Java 中是否有任何库可用于以编程方式创建此类签名的 PDF 文档?我需要加载该 PDF 并以某种方式向其添加签名,然后将其另存为新的 PDF 文档。

示例代码将不胜感激。

编辑:

生成的代码应将 PDF 文档作为输入参数并执行以下操作:

  1. 准备要签名的数据
  2. 将要签名的数据提供给生成 PKCS#7 签名数据文件的外部签名机制
  3. 提供 PKCS#7 签名数据文件
  4. 将签名数据添加到 PDF 文档
  5. 保存PDF文档

据我所知,第一步很重要,否则 PKCS#7 签名数据将是错误的。

最佳答案

如果我正确理解您的问题,您的 pkcs#7 将签署 PDF 的全部内容。即所有 PDF 文件字节。 在这种情况下,答案是你不能。

当您签署 PDF 文件时,您不会“按原样”签署其所有字节。 在签署 PDF 之前,您必须在 PDF 中创建两个“字节范围”, 在 PDF 中间留出足够的空间来包含签名。 然后,您必须连接这两个字节范围,对这些字节进行签名,并将签名包含在您在 PDF 中留下的空间中。

看看
* https://www.adobe.com/devnet-docs/acrobatetk/tools/DigSig/Acrobat_DigitalSignatures_in_PDF.pdf (www.adobe.com)

关于JAVA - 如何使用原始 PDF 和单独的 PKCS#7 签名数据创建签名 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304071/

相关文章:

java - 将 Java 套接字从线程 A 传递到 B

excel - 在网站上集成 pdf excel 单词查看器

java - iText连续PDF编辑java

java - 如何使用 iText 复制 AcroForm?

java - 在 Java 中实现 RSA-SHA1 签名算法(创建用于 OAuth RSA-SHA1 签名的私钥)

ios - 如何在 iPhone 上生成证书签名?

java - 错误: Client does not support authentication protocol requested by server; consider upgrading MySQL client

html 中的 Java 小程序

java - 如果我们没有为对象创建引用变量,如何关闭扫描器类,那么如何避免资源泄漏警告消息

powershell-2.0 - 使用powershell获取数字签名的签名时间(时间戳)