java - 更新数字签名的 PDF 并重新签名

标签 java pdf itext digital-signature digital-certificate

印度的公司法将发生一些变化。其中值得注意的是,有一项规定,如果公司进行了数字签名,则可以以电子形式维护其登记册。以下几点让我感到困惑:

  • 记录一旦注明日期并进行数字签名,就无法编辑或更改;

  • 记录应能够根据该法案的规定或根据该法案制定的规则进行更新,并且应能够在每次更新时记录更新日期。

    <

假设我们正在对 PDF 表格中的条目进行数字签名。如果表中最初有 2 行,并且用户对 pdf 进行数字签名。现在,我们在 pdf 中添加了 2 行,我们可以再次签署同一份文档吗?这样做不是让之前的签名失效了吗?或者我们可以说前一个签名仅验证表中的前两行,第二个签名验证其余行吗?

这可能吗?如果是的话可以使用itext和java来完成。

PS:以上内容是对不断更新的物理登记簿的替代品。每当登记册更新时,一个人必须在新记录上用湿墨水签名来证明这一点。这就是政府希望通过电子方式实现的目标。

最佳答案

首先我假设

  • OP 正在谈论集成 PDF 签名,
  • 他希望保留文档中的原始签名,
  • 并且更改会通过增量更新应用于已签名的文档。

在这种情况下,确实可以对文档应用更改,而无需在数学上使覆盖原始签名字节范围的原始签名无效,参见。 this answer作为背景。

不过,针对这种情况的 PDF 规范规定,只允许进行某些更改。关于这一点,参见this answer 。本质上,最好的希望(取决于原始签名的类型)是这些允许的更改:

  • 添加签名字段
  • 添加或编辑注释
  • 提供表单字段值
  • 数字签名

因此,

If there are 2 rows in the table initially, and the user digitally signs the pdf. Now, we add 2 more rows to the pdf, can we sign the same document again? In doing so are we not invalidating the previous signature?

如果运算符(operator)通过填写现有表单字段或创建某种注释的方式来添加 2 行,则他只能添加 2 行。前者需要计划这些附加信息并相应地提供表单字段,而后者仅使用注释,可能无法在每个上下文中被接受(某些预览器不显示注释...)。

因此,可以对已签名的文档添加某些更改,但必须事先做好计划。

关于java - 更新数字签名的 PDF 并重新签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22766445/

相关文章:

php - TCPDF序列化TCPPDFtag参数

r - 在跨设备和平台(尤其是PDF)的R图形中使用Unicode 'dingbat-like'字形

pdf - 我可以使用 iText 将 PDF 与权限合并吗

itext - 为什么我无法编译 iText 源代码?

java - 在java桌面应用程序中获取facebook USER TOKEN

java - Vaadin 是否有相当于 JavaFX GridPane 的功能?

python - PDF 抓取 : how to automate the creation of txt files for each pdf scraped in Python?

java - 我无法将变量传递给 Main 方法(Cucumber)

java - Android Studio : Using radioButtons for a quiz

java - 如何减小pdf中png图像的大小(压缩pdf中的png)