当前位置: 首页 > 知识库问答 >
问题:

PDF中的“分离”数字签名

朱慈
2023-03-14

我想实现PDF的“并行”签名过程,这样用户就可以不是“一个接一个”地进行数字签名,而是同时进行数字签名。为了实现这一点,我决定为所有用户创建初始文档的单独副本,并在它们上获得签名。最终,所有签名都应该连接到单个PDF中。

让我们假设,PDF在签名html" target="_blank">过程中没有变化,除了签名字段创建(所有acroForms、signaturecontainer、可视签名等都是在之前创建的,并且对所有这些都是相似的)。

...在以后的研究中,我阅读了这篇文章并了解到,以前的每个数字签名(即使是分离的)都包含在下一个签名的SignedContent中。所以没有办法把数字签名与内容完全分离。这导致了一个问题,在上一个签名完成之前,无法计算下一个签名。

附言。我正在使用Apache PDFBox与PDF一起工作。

共有1个答案

松高爽
2023-03-14

请告诉是否有任何选择来绕过这个?

如果您希望您的签名是可互操作的,那么这是没有办法的。

我阅读了这篇文章并了解到,以前的每个数字签名(即使是分离的)都包含在下一个签名的SignedContent中

例如,您可以在文档的单个新修订版中准备多个签名字段和字典,并设置每个签名的签名字节范围以排除所有这些签名的占位符。

您可以忽略CMS签名容器中只有单个SignerInfo的要求,并将来自不同签名方的SignerInfo放入单个签名字段中的单个签名容器中。

普通PDF签名验证器将,

如果按照后一选项所述创建签名,则至少对其中许多签名进行了积极验证,直到您详细查看验证结果并意识到它们只验证了其中一个签名而忽略了其他签名为止。

例如,在有两个SignerInfo的情况下,Adobe Reader验证第二个(我假设它总是验证最后一个),eSig DSS验证第一个,并且它们中的任何一个都没有在验证结果中指示可能存在另一个SignerInfo。

例如,瑞典一家大型安全公司在其软件中实现了第二种选择;在其主brew格式PDF/CAdES-A中,它在PDFs中插入CAdES-A容器作为CMS容器,并允许在其中使用多个SignerInfo。显然,因此,它自己的软件将识别和验证所有的SignerInfo。尽管如此,这是一个家庭酿造的解决方案,不能互操作。

 类似资料:
  • 我想实现PDF的“并行”签名过程,这样用户就可以对文档进行数字签名,而不是“一个一个”,而是同时进行。为了实现这一点,我决定为所有用户创建初始文档的单独副本,并在其上获得签名。最终,所有签名都应该连接到单个PDF中。 让我们假设,除了签名字段创建(所有的acroForms、signatureContainers、可视签名等都是在之前创建的,并且都是类似的),在签名过程中PDF没有改变。 在进一步的

  • 我已经在这个URL的帮助下为一个XML文档创建了一个使用PFX文件的数字签名。我想知道的是如何使它成为一个独立的数字签名,以便它可以传递给XML签名标记?现在,它被封装在我的XML文件中(即封装签名)。

  • 我正在用C#开发一个执行数字签名验证的webserver,以确保pdf文件没有被修改。我使用了iText和iTextSharp。 和我的C#验证码: 在VerifySignature(name)行中;抛出NullReferenceException! 有趣的是,如果我使用C#代码执行签名,我就可以在java中验证它,因为我添加了这些指令:BouncyCastleProvider provider=

  • 我使用PdfWriter setEncryption对PDF文档进行了加密/解密。一切正常,解密也正常。 当我为数字签名的PDF文档做同样的事情时,我的数字信息与消息一起损坏(SigDict/Contents非法数据) 是否可以在不影响数字签名信息的情况下加密PDF?

  • 使用itext v5对文档进行数字签名时。5.11 PDF/A-2b文档被破坏——这意味着它们不再作为PDF/A文档有效。违反以下规则:https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Parts-2-and-3-rules#rule-643-1 在上面的链接中,它指定摘要无效,因此我也给你一个代码段,在使用iText

  • 印度的《公司法》有一些变化。其中值得注意的是,有一项规定,如果公司进行了数字签名,则可以以电子形式维护其登记册。以下几点让我感到困惑: > 记录一旦以数字方式标注日期和签名,不得编辑或更改; 记录应能够根据法案的规定或根据法案制定的规则进行更新,更新日期应能够记录在每次更新中。 想象一下,我们正在对PDF中的表进行数字签名。如果表中最初有2行,并且用户对pdf进行数字签名。现在,我们在pdf中再添