java如何向已经签名的PDF添加覆盖,而不使用PDFBOX使第一个签名无效?
我试图在已经签名的PDF(可见分离签名)中添加覆盖(我认为这是不允许的更改),然后再次签名。这将导致第一个签名无效。然而,第二个签名仍然有效
在第二次签名后,两个签名是否都有效
我正在使用PDFBOX v2。0.8
附上样本PDF here
- 原始PDF
- 对第一步中的PDF进行数字签名
- 覆盖第2步中的数字签名PDF
- 对第3步生成的PDF进行数字签名
谢谢, 阿比
你可以在下面搜索框中键入要查询的问题!
我试图在已经签名的PDF(可见分离签名)中添加覆盖(我认为这是不允许的更改),然后再次签名。这将导致第一个签名无效。然而,第二个签名仍然有效
在第二次签名后,两个签名是否都有效
我正在使用PDFBOX v2。0.8
附上样本PDF here
谢谢, 阿比
# 1 楼答案
事实证明,主要的问题不是第一次签名后应用的更改是否被允许,问题在于这些更改是使用普通保存添加到文件中的
这样的正常保存可以完全改变PDF对象在PDF文件中的存储顺序。因此,这样的正常保存会损坏第一个签名,使其无法修复,因为其声称的签名字节范围已更改,并且签名值也不再位于这些范围之间的间隙中
因此,无论对已签名文档应用哪种更改,都要确保将其存储为增量更新
尽管如此,PDFBox增量更新机制很难用于除其设计目的之外的任何东西,即除了添加额外签名之外的任何东西。您必须标记更改的低级对象,包括从文档目录到它们的一系列对象,因此您必须特别了解如何在非常低级的级别上实现更改。此外,这种机制通常要求保存的对象比实际更改为“目录链”标准的对象多