在 PHP 中验证签名的 PDF 文档

2023-12-09

我有一份已签名的 PDF 文档。它是使用 TCPDF 进行签名的。现在我想验证一下。这是我的解决方案:

  • 获取签名 pdf 的内容。
  • 根据/ByRange字段获取原始内容和签名值。
  • 从签名值中获取加密的摘要消息。它是签名值末尾的八位字节字符串。
  • 使用 Openssl_public_decrypt() 函数用公钥解密加密的摘要消息。然后我们有一个带有前缀的字符串(“3021300906052b0e03021a05000414”)。该前缀表示使用的哈希函数是 SHA-1。去掉前缀后,得到摘要消息D1。
  • 使用SHA1()函数对原始内容进行哈希处理,得到摘要消息D2。
  • 比较 D1 和 D2。如果 D1 = D2 则签名有效,反之亦然。

我的问题是在最后一步中,当我比较 D1 和 D2 时,它们不相等。我不知道为什么。 谢谢你的帮助。


You should try based on following example
<?php
// $data and $signature are assumed to contain the data and the signature

// fetch public key from certificate and ready it
$pubkeyid = openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");

// state whether signature is okay or not
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1) {
    echo "good";
} elseif ($ok == 0) {
    echo "bad";
} else {
    echo "ugly, error checking signature";
}
// free the key from memory
openssl_free_key($pubkeyid);
?>
more Examples ad explanation
 http://www.php.net/manual/en/function.openssl-verify.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP 中验证签名的 PDF 文档 的相关文章

  • 如何使用 jquery ajax 将锚点的值发送到 php

    我正在尝试使用 jquery 将几个锚点的值发送到 php 文件 但我没有从 php 脚本中得到回调 div class result div a href value class star Star 5 a a href value cl
  • TCPDF / FPDI 可以接受 PDF 作为字符串吗?

    是否可以将 TCPDF 或 FPDI PDF 作为字符串提供 我有一个传入的 PDF 数组作为字符串 但无法写入磁盘 我在文档中找不到与此相关的任何内容 如果没有 是否有一种有效的方法来从内存或作为对象存储 读取这些 PDF 将它们喂给 F
  • $_REQUEST、$_GET、$_POST 哪一个最快?

    这些代码中哪一个会更快 temp REQUEST s or if isset GET s temp GET s else temp POST s REQUEST http php net manual en reserved variabl
  • 如何使用 RewriteRule 来为 PHP 修改 $_SERVER['REQUEST_URI'] ?

    有了这个 htaccess RewriteEngine On RewriteRule foo foo 1 here I tried L PT C etc RewriteRule index php L 我已经尝试了第一个 RewriteRu
  • 在 php 和 mysql 中使用 utf8mb4

    我读过 mysql gt 5 5 3 完全支持每个可能的字符 如果您使用编码utf8mb4对于某个表 列http mathiasbynens be notes mysql utf8mb4 http mathiasbynens be note
  • 限制分页页数

    objConnect mysql connect localhost root or die mysql error objDB mysql select db Test strSQL SELECT FROM UserAddedRecord
  • 维护 HttpUrlConnection 调用之间的会话(Native/Webview)

    让我从我做的开始desire 我想制作一个应用程序part native and part webviews Problem 维护本机和 webview 部分之间的会话 My 处理方法 this 我打算实现一个本机登录 其中我向用户展示两个
  • 使用php插入sql数据库时出错

    我有一个带有 MySQL 插入查询的程序 sql INSERT INTO people person id name username password email salt VALUES person id name username p
  • 如何在 WordPress/WooCommerce 3+ 中向评论表单添加自定义字段

    我正在尝试在产品评论中添加 电话 字段 WooCommerce 3 针对未注册用户 来宾 电话号码只能由管理员在管理面板中看到 电话字段需要填写 Required 我尝试了这段代码 但这不起作用 function true phone nu
  • PHP 负面因素不断增加

    我这里有这个代码 remaining 0 foreach clientArrayInvoice as key gt row remaining remaining row total 它的作用是 它获取总计值并将它们相加 但是当我有负值时
  • 如何缓存 twitter api 结果?

    我想缓存 twitter api 结果的结果并将其显示给用户 缓存结果的最佳方法是什么 我正在考虑根据时间限制将结果写入文件 可以吗 还是应该使用任何其他方法 最重要的是 理想的缓存时间是多少 我想显示来自 twitter 的最新内容 但
  • 使用 IntlDateFormatter 转换非公历日期

    我应该如何使用将非公历日期转换为其他日历类型IntlDateFormatter 我要转换 1392 01 02 from persian to islamic日历 我尝试了以下代码 但它没有转换日历 formatter IntlDateFo
  • 无法在 PHPUnit 中使用数据提供程序运行单个测试

    使用命令行运行测试时遇到问题 如果我像这样运行 phpunit phpunit no configuration filter testAdd DataTest DataProviderTest php 效果很好 但是我们使用正则表达式来准
  • PHP:如何检查总数。 URL 中的参数?

    我正在使用 REQUEST 检索参数 有没有办法找到总数 URL 中的参数 而不是检索每个参数然后进行计数 这将为您提供总数 分隔的 URL 查询参数 count explode SERVER QUERY STRING 如果您只想要唯一的参
  • Heredoc:常用的“EOT”实际上是什么意思?

    PHP s 定界例子 http www php net manual en language types string php language types string syntax heredoc似乎总是使用 EOT 有时是 EOD 作
  • 您可以使用 MySQL 查询来完整创建数据库的副本吗

    我有一个包含 5 个表的 MySQL 数据库的实时版本和一个测试版本 我不断使用 phpMyAdmin 将实时版本中的每个表复制到测试版本 有谁有mysql查询语句来制作数据库的完整副本吗 查询字符串需要考虑结构 数据 自动增量值以及与需要
  • 表单提交后显示 $_FILES['image']

    提交表单后如何显示上传的图片 提交表单后 它将是一个预览页面 因此我不会在 MySQLet 中存储图像类型 BLOB 如何显示 FILES image
  • PHP 中的简单 JSON 请求

    我有以下 json country code latitude 45 9390 longitude 24 9811 zoom 6 address city country Romania country code RO region 我只想
  • PHP 相当于朋友或内部

    php 中是否有相当于 朋友 或 内部 的东西 如果没有 是否有任何模式可以遵循来实现这种行为 Edit 抱歉 但标准 Php 不是我想要的 我正在寻找类似于马戏团长所做的事情 我有一些类在后端进行 C 风格的系统调用 并且杂耍已经开始变得
  • 在 PHP 命令行上显示完整的堆栈跟踪

    Problem 我的 PHP 堆栈跟踪缩写为 Stack trace 0 www html table app create php 128 SoapClient gt call call Array 1 www html table ap

随机推荐

  • 在 Windows 批处理文件中访问剪贴板

    知道如何使用批处理文件访问 Windows 剪贴板吗 设置剪贴板的内容 如 Chris Thornton klaatu 和一堆其他人已经说过 使用 windir system32 clip exe 更新2 对于快速的一句台词 你可以这样做
  • 在Android中查看holder类

    这是一个基本问题 我正在浏览谷歌关于 Android 的官方视频 在其中他们使用 Viewholder 类作为 静态类Viewholder Image查看图像 文本视图文本 将此类声明为静态或将视图持有者用作静态内部类是否正确 我认为假设如
  • Python:运行时根据requirements.txt设置PYTHONPATH

    我有一个带有命令行脚本的 Python 应用程序 我通过公开脚本setuptools 入口点 功能 每当用户运行脚本时 我希望环境与包的一致requirements txt 这意味着环境必须包含与版本说明符匹配的每个依赖包的版本requir
  • SQLCMD:提示输入变量?

    来自 Oracle 的背景 Oracle 的 SQLPlus 可以让您指示一个变量 如果未设置该变量 系统会提示您提供一个值 我正在使用 SQLCMD 使用 var name 语法 在 SSMS SQLCMD 模式下 我得到 发生致命的脚本
  • Anaconda 更新后 Jupyter Notebook 内核失效

    我遇到了以下问题 更新 Anaconda 后 因为我将 skimage io 导入 Jupyter Notebook 中的项目时出错 出现了更大的错误 Dead Kernel 现在我无法启动一个项目 因为 Jupyter 给出以下错误 Co
  • 如何使用 iText\iTextSharp 创建圆角表格? [复制]

    这个问题在这里已经有答案了 我必须创建一个具有圆角的表格 如下所示 我可以用 iTextSharp 做到这一点吗 这是使用单元事件完成的 请参阅我的书中的日历示例 Java C 确保您没有向单元格添加任何 自动 边框 而是在单元格事件中自己
  • 防止浮动 div 换行到下一行

    首先 这是我的网站 您会注意到 在页面中间的分隔栏下方 有三列 一列包含表单 一列包含文本 一列包含链接 现在 将窗口大小调整为稍微小一些 右侧的 div 将下降到下一行 有没有办法不显示它 所以divs会调整 我有一个液体布局 到它们不适
  • 如何使用 CSS 来换行而不是用空格换行?

    使用以下标记 是否可以 以及如何 实现如预览中所示的换行 Markup div class filled box h2 Hi there h2 p I am just a text with some words that want to
  • XSLT 与 XProc - 所需类型中的参数绑定

    我正在尝试将调用 Saxon 版本 8 9 的批处理文件转换为 XProc 管道 Calabash 这是我的批量调用 java jar saxon8 jar o out xml in xml style xsl config config
  • 如何将数据表中的记录分页发送到服务器类

    当我单击全选 超链接 选项时 或者我想要将特定页面中的特定记录 使用复选框 发送到服务器类时 我试图将 jQuery 数据表中的所有记录发送到服务器类 但问题是当我单击表单提交按钮时 即导出PDF 仅获取当前页面中的记录 即使在 jquer
  • iOS 应用程序提交:删除 iPad 支持

    我有一个 iPhone 应用程序 不支持 iPad 布局 在 App Store 中发布了一年 我的客户希望从 iPad 的 App Store 中删除该应用程序 我知道它需要更新应用程序 但如何更改我的 plist 以反映更改 苹果允许这
  • 在 Linq 表达式主体中如何使用变量的值而不是对其的引用?

    这是我的代码 IQueryable
  • 在 JavaScript 中隐藏/欺骗引用者的最可靠方法是什么?

    通常 引荐来源网址可通过以下方式追踪 JavaScript 的document referrer 请求标头 即PHP SERVER HTTP REFERER 我已经设置了一个键盘演示它显示了这些属性 用于测试目的 要求 原始引用者应该有效地
  • Eclipse 2022-3 不再支持 CVS?

    将Eclipse升级到最新版本2022 3后 我发现官方软件源中似乎不再提供 Eclipse CVS Client 插件 这是过去几个版本安装CVS支持的方式 知道如何安装 CVS 支持吗 Update 对于最新的 Eclipse 版本 请
  • ClassCastException:android.widget.TextView 无法转换为 android.widget.ListView

    我不知道为什么我会得到这个类强制转换异常 我已经做了几次 Project gt Clean 仍然没有成功 请有人帮助我 谢谢 这是 ScheduleFragment java public class ScheduleFragment ex
  • GSM Modem如何处理送达报告?

    我想在应用程序中出于某种目的使用 GSM 调制解调器 我想要的是处理已发送短信列表的短信发送报告 GSM 调制解调器收件箱和发件箱仅限 15 件 每次我阅读收件箱时 GSM 调制解调器都会返回一个列表并清除列表 如何检查已从 GSM 调制解
  • 使用 Jersey + hibernate RESTful Web 服务上传和下载图像

    我决定将图像作为字节数组存储在数据库中 我收到错误 我的实体模型 带有 getter 和 setter Entity Table name USER schema test XmlRootElement public class User
  • ValueError:logits 和标签必须具有相同的形状((无,4)与(无,1))

    我尝试制作一个卷积神经网络来对狗和猫进行分类 我收到标题中提到的错误 从我的搜索中 有人说错误属于tensorflow和keras库的不同版本 有人说这是语法错误 我将把我的代码留在这里 告诉我哪里出错了 IMPORTING LIBRARI
  • if else 语句和 if_else 的不同行为

    我正在尝试创建一个函数 将数据帧的数据类型转换为factor如果列的类型为char否则我不会改变任何东西 但这里的问题是我可以做同样的事情if else声明但不使用if else陈述 这是相同的代码 注意 我正在使用titanic数据集 c
  • 在 PHP 中验证签名的 PDF 文档

    我有一份已签名的 PDF 文档 它是使用 TCPDF 进行签名的 现在我想验证一下 这是我的解决方案 获取签名 pdf 的内容 根据 ByRange字段获取原始内容和签名值 从签名值中获取加密的摘要消息 它是签名值末尾的八位字节字符串 使用