验证 PDF 文档中的数字签名

2024-04-27

我正在尝试验证 PDF 数字签名。

我知道,当 PDF 被签名时,会定义一个字节范围,嵌入证书,并且根据我的阅读,签名的消息摘要和时间戳也存储在 PDF 中。

我已经可以提取证书并验证它们。 现在我正在尝试验证 pdf 的完整性,但我的问题是我不知道签名的消息摘要位于何处。

在此示例中,来自 Adob​​e 的签名 pdf (http://blogs.adobe.com/security/SampleSignedPDFDocument.pdf http://blogs.adobe.com/security/SampleSignedPDFDocument.pdf),我可以清楚地识别摘要,因为它位于嵌入证书的下方:/DigestMethod/MD5/DigestValue/(第 1520 行)。

但那个 PDF 样本似乎是 2009 年的,我怀疑消息摘要现在以不同的方式存储,因为我用 Adob​​e Reader 和 iText 签署了 PDF,但我找不到像以前那样的任何消息摘要字段一。 有人可以告诉我们摘要现在是否以不同的方式存储吗?他们位于哪里?

不管怎样,现在我正在使用 Adob​​e 的示例文档,并尝试验证其完整性。 我正在根据指定的字节范围对文档的字节进行签名,并使用 MD5 算法对它们进行摘要,但是我得到的摘要值与消息摘要字段中的摘要值不匹配... 难道我做错了什么?摘要是否也使用签名者的私钥进行签名?

我很感激任何帮助。


计算集成 PDF 签名的哈希值时需要注意许多细节,其中包括:

  • 从 PDF 中提取正确的字节以进行哈希处理。这字节范围准确告诉您哪些字节范围是有符号的。为了在现代签名环境中被接受,范围必须覆盖整个 PDF 文件修订版,但值除外Contents.

    当心,价值Contents includes前导“”括号。

  • 不要使用常规文本编辑器或文本处理指令(例如readln or writeln) 来处理 PDF。 PDF 本质上是二进制的,即使它们肉眼看起来是文本的。使用此类文本相关操作复制 PDF 部分很可能会更改它们的细节,最终破坏签名哈希值。

如有疑问,请不要猜测,而应阅读规范。 Adobe 已提供 ISO 32000-1 的副本here http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf,以及您需要了解的有关 PDF 格式以开始处理它们的更多信息,可以在此处以及其中引用的其他公共标准中找到。关于集成 PDF 签名的非常简短的介绍可以在这个答案 https://security.stackexchange.com/questions/35121/a-standard-way-to-manually-add-a-digital-signature-to-a-pdf-file/35131#35131以及从那里引用的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

验证 PDF 文档中的数字签名 的相关文章

  • 为什么 Internet Explorer 无法使用 NodeJS 和 Express 下载 PDF?

    我正在使用 NodeJS 构建一个网站 需要提供一些 PDF 以及其他文件 由于我无法确定的原因 Internet Explorer 8 第一次无法在 Acrobat Viewer 中完全下载 PDF 有时此后多次 直接保存文件效果很好 但
  • 让 java IAIK PKCS11 包装器适用于 nfast

    我正在尝试让 IAIK PKCS11 包装器与 nfast 一起使用 它总是期待 pkcs11wrapper 库文件并抛出错误 java lang UnsatisfiedLinkError pkcs11wrapper 在java libra
  • 从请求响应创建 PDF 不适用于 axios,但适用于本机 xhr

    为了强制从服务器下载 PDF 我尝试使用 axios 和本机 xhr 对象 原因是我必须发送post请求 因为我向服务器传递了太多数据 所以带有简单链接的选项 例如site ru download pdf对我不起作用 尽管我最终设法用 Xh
  • 使用 /CCITTFaxDecode 过滤器从 PDF 中提取图像

    我有一个通过扫描软件生成的 pdf 文件 该 pdf 每页有 1 个 TIFF 图像 我想从每个页面中提取 TIFF 图像 我正在使用 iTextSharp 我已经成功找到了图像 并且可以从PdfReader GetStreamBytesR
  • 在 Visual Basic 2010 的控件中显示 PDF

    我刚刚安装了 Visual Basic 2010 浏览了一些有关如何显示文件的教程 但找不到任何有关如何选择现有 PDF 文件并将其嵌入表单的材料 任何正确方向的建议或指示都会很棒 谢谢 只需在表单中嵌入浏览器控件并将其导航到 PDF 文件
  • 如何使用 javascript 将 Html 页面转换为 PDF [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个java应用程序 它在网页中查看很少的结果 我想将这些结果保存到PDF文件中 用户单击 导出到PDF 按钮 任何人都可以帮助我使用
  • 将大数字转换为字母(然后再转换回来)

    是否有一个术语来描述将大数字存储为字母的想法 例如 假设我有 相对较小的 数字 138201162401719 并且我想将字符数缩小到尽可能少的字符数 我知道这无助于节省磁盘空间 英文字母表中有 26 个字母 但我将它们算作 25 个 因为
  • 从 PDF 转换为 HTML [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 打开 PDF 到书签/指定目标?

    我正在尝试使用 python 打开特定书签的 PDF 到目前为止 我可以在命令提示符中运行以下命令并得到我想要的 last是 PDF test pdf 中指定目的地的名称 C Program Files x86 Adobe Reader 1
  • JsPdf 库无法读取 PDF 中的阿拉伯语

    在 pdf 中显示阿拉伯值的代码不起作用 它向我展示了一些我无法理解的奇怪语言 var sm nature name nature1 ar 1 name nature2 ar 2 name nature3 ar 3 name nature4
  • 使用java编程将pdf可编辑字段转换为文本

    我准备了一份可编辑的表格 但无法使用java编程将pdf可编辑字段转换为文本 使用的 API pdfbox app 2 0 0 RC2 PDFBox 0 7 3 itextpdf 5 1 0 pdfclown 请帮助我了解如何将 pdf 可
  • 创建一个带有可填充字段的pdf python

    因此 我的任务是创建一个 pdf 允许最终用户在 pdf 中输入信息并打印或保存它 或者 我尝试创建的 pdf 是从具有可填充字段的 pdf 模板呈现的 我遇到的问题是 每次我使用任何 python 库 pypdf2 pdfrw repor
  • 如何从浏览器打印 PDF

    在Web应用程序中 是否可以强制在客户端上打印PDF文件 如果浏览器配置为在窗口内打开 PDF 我想调用 window print 会起作用 但某些浏览器 例如我的 被配置为在外部打开 PDF 谷歌文档的做法是将 JavaScript 嵌入
  • 我正在使用 Wincrypt for Diffie-Hellman — 我可以以纯文本形式导出共享机密吗?

    好的 感谢Mike https stackoverflow com users 6970 mike dimmick 我能够让 Wincrypt 生成 Diffie Hellman 密钥对 我想出了导出公钥 以及如何导入对方的公钥 根据文档
  • 创建 PDF/A-3:嵌入文件应包含有效的 Params 密钥

    我正在尝试使用 itextpdf 5 4 5 和 itext pdfa 5 4 5 创建 PDF A 3 当我设置 PdfFileSpecification 时 出现以下异常 com itextpdf text pdf PdfAConfor
  • 修改代码以从 Windows 中的 PE 可执行文件检索双重签名信息?

    我已经挣扎了一段时间想要修改这段代码示例 https support microsoft com en us help 323809 how to get information from authenticode signed execu
  • 使用 apache PDF-Box 插入 PDF 附件的缩略图

    我有一个代码可以将文件附加到 PDF 文件 PDDocument doc new PDDocument PDPage page new PDPage doc addPage page read attachment file File fi
  • 检测文本字段溢出

    假设我有一个 PDF 文档 其中的文本字段定义了某种字体和大小 有没有办法确定某些文本是否适合字段矩形内PDFBox 我试图避免文本未完全显示在字段内的情况 因此 如果给定字体和大小的文本溢出 我想将字体大小更改为Auto 0 此代码重新创
  • 适用于 iPhone / iPad / iOS 的快速、精益 PDF 查看器 - 提示和提示?

    最近有很多关于绘制 PDF 的问题 是的 您可以使用UIWebView但这无法提供您所期望的优秀 PDF 查看器的性能和功能 您可以绘制PDF页面到 CALayer http www cocoabuilder com archive coc
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet

随机推荐

  • ~/.conda/envs 与 ~/anaconda3/envs

    最近更新 macOS Catalina 后 我正在调试 Anaconda 的一些问题 并注意到 conda envs已添加到配置中 这已经破坏了我的许多开发环境 我想知道 为什么我会看到 conda 环境的这个新位置 我可以删除它并继续仅在
  • 可以用html渲染图像吗?

    我可以控制从文本文件获取 html 并在网页中呈现该 html 的页面 现在它必须在某处添加图像并引用该图像 src 我想知道我们是否可以与其他 html 代码一起渲染图像 这可能吗 是的 你需要一个数据 URI 方案 http en wi
  • Python 元类有什么用?

    元类可以用其他方式做不到的事情做什么 Alex Martelli 表示 有些任务如果没有元类就无法完成Python 元类与类装饰器 https stackoverflow com questions 1779372 python metac
  • Openfire 在用户离线时发送推送通知

    我使用 openfire 3 9 3 服务器和 Android 和 IOS 作为客户端 我想在收件人用户离线时通过推送通知向两个客户端发送消息 当发送推送时 发送者应该收到消息收据 为此 我尝试过 制作拦截器 在此 我没有收到任何可以跟踪的
  • R rvest 检索空表

    我正在尝试两种策略来从网络表中获取数据 library tidyverse library rvest webpage lt read html https markets cboe com us equities market stati
  • 在iOS中,在纯C中,这是获取本地文件路径的方法吗?

    我需要最终得到一个 cstring 作为捆绑包中文件的本地路径 First include
  • Laravel updateOrCreate 带有自动增量数据库

    我的目的是如果值存在则更新 否则插入新行提交表单后在数据库表中 问题是 这里的函数添加新列在数据库表中而不是更新它们 这是我的功能 MyModel updateOrCreate array myField gt myValue gt whe
  • 如何同时将单个卷挂载到多个/var/lib/docker?

    可以将单个 docker 卷共享给多个 docker 容器 var lib docker目的地 一个最小的可重现示例如下 docker volume create name lib docker run privileged v lib v
  • Primefaces 问题:使用 ViewScoped 托管 bean 从 p:datatable 进行 p:filedownload

    使用 ViewScoped 托管 bean 从 p datatable 进行 p filedownload 不起作用 它调用方法prepareFile和getFile两次 在我提到的方法的第一次调用中 它设置表中的第一个文件 在方法的第二次
  • ZipInputStream.getNextEntry() 如何工作?

    假设我们有这样的代码 File file new File zip1 zip ZipInputStream zis new ZipInputStream new FileInputStream file 假设您有一个包含以下内容的 zip
  • 如何检查 Google 地图是否已完全加载?

    我正在将 Google 地图嵌入到我的网站中 加载 Google 地图后 我需要启动一些 JavaScript 进程 有没有办法自动检测 Google 地图何时完全加载 包括图块下载等 A tilesloaded 存在应该完全完成此任务的方
  • 使用 CURL post 方法的 Google 翻译 API

    有人有过使用 Google 翻译 API v2 在 POST 方法上使用 PHP CURL 翻译 HTML 的经验吗 我已经尝试了 github 上的几个代码和库 但没有一个适合我 我发现的是 GET 方法 由于通过 GET 或查询字符串解
  • 在测试中检查 CLI 的退出代码

    我正在为命令行工具编写自动化测试 本质上 我想使用各种选项调用 CLI 并测试退出代码和 或输出 我的测试如下所示 from mymodule cli tool import main def test args capfd with py
  • Heroku 缺少必需的标志:-a,

    我目前正在做一个项目 但我在使用 Heroku 时遇到了问题 这是当我尝试使用 heroku 命令时总是出现的错误 问题中的错误 https i stack imgur com bEQ0m png 请问有同样错误的朋友 可能是什么原因造成的
  • Golang xml.Unmarshal 接口类型

    使用xml我在解组非同质类型列表时遇到问题 考虑以下 XML 文档 其嵌套元素是非同质类型的列表
  • py2exe + sqlalchemy + sqlite 问题

    在进入全速开发模式之前 我正在尝试让一些基本的东西在 Python 中工作 具体如下 Python 2 5 4 PyQt4 4 4 3 SqlAlchemy 0 5 2 py2exe 0 6 9 setuptools 0 6c9 pysql
  • String 对象上的“tap”方法未返回预期结果

    在对 String 类型的对象使用 tap 方法时 我遇到了一个有趣的问题 abc tap o o xyz this line returns abc instead of xyz tap 方法适用于其他类型的对象 tap o o lt l
  • 将自定义路由添加到 Rails 应用程序

    我已经读过导轨指南 http guides rubyonrails org routing html 我想要设置的是路由到 配置文件 控制器的以下路由 GET profiles charities 应显示所有慈善机构 GET profile
  • 在 SQL 中查找日期范围重叠的记录

    我有以下表格和数据 CREATE TABLE customer wer id customer NUMBER name VARCHAR2 10 surname VARCHAR2 20 date from DATE date to DATE
  • 验证 PDF 文档中的数字签名

    我正在尝试验证 PDF 数字签名 我知道 当 PDF 被签名时 会定义一个字节范围 嵌入证书 并且根据我的阅读 签名的消息摘要和时间戳也存储在 PDF 中 我已经可以提取证书并验证它们 现在我正在尝试验证 pdf 的完整性 但我的问题是我不