gpt4 book ai didi

pdf - 如何检查 PDF 是否具有任何类型的数字签名

转载 作者:行者123 更新时间:2023-12-04 07:18:07 25 4
gpt4 key购买 nike

我需要了解 PDF 是否具有任何类型的数字签名。我必须管理巨大的 PDF,例如每个 500MB,所以我只需要找到一种方法将未签名和签名分开(这样我就可以将刚签名的 PDF 发送到管理它们的方法)。到目前为止发现的任何程序都涉及尝试通过例如提取证书BouncycaSTLe 库(在我的情况下,用于 Java):如果它存在,则 pdf 被签名,如果它不存在或引发异常,它不是(原文如此!)。但这显然是消耗时间/内存的,而不是资源浪费实现的示例。

是否有任何快速的语言无关的方式,例如打开 PDF 文件,并读取第一个字节并找到告诉该文件已签名的信息?
或者,是否有任何引用手册详细说明如何在内部制作 PDF?

先感谢您

最佳答案

您将想要使用 PDF 库,而不是尝试自己实现这一切,否则您将陷入处理线性化文档、过滤器、增量更新、对象流、交叉引用流等变化的困境。

关于引用资料;根据我的粗略搜索,看起来 Adob​​e 不再向所有人提供其 ISO 32000:2008 规范版本,尽管该规范主要是对 PDF v1.7 Reference manual 的翻译。到符合 ISO 的语言。

因此假设 PDF v1.7 引用,最相关的部分将是 8.7(数字签名)、3.6.1(文档目录)和 8.6(交互表单)。

基本过程将是:

  • 阅读“Perms”和“AcroForm”条目的文档目录。
  • 阅读“Perms”字典中的“DocMDP”、“UR”或“UR3”条目。如果这些条目存在,那么您很可能拥有经过认证的文档或支持 Reader 的文档。
  • 阅读“AcroForm”条目; (确保您没有“XFA”条目,因为用来自 Porgy 和 Bess 的 Fraizer 的话来说:Dat 是一个复杂的问题!)。您基本上想首先检查是否有(可选)“SigFlags”条目,在这种情况下,非零值表示字段数组中有签名。否则,您需要遍历 'Fields' 数组的每个条目,寻找一个字段字典,其中 'FT'(字段类型)条目设置为 'Sig'(签名),而 'V'(值)条目不是无效的。

  • 使用可以使用文档的交叉引用表将您导航到正确的间接对象的 PDF 库应该比暴力搜索文档的证书更快,资源消耗更少。

    关于pdf - 如何检查 PDF 是否具有任何类型的数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301138/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com