使用php验证数字签名

2024-02-26

我有一封经过数字签名的电子邮件。

email :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The below email has been digitally signed for test purposes. We will
now go on and save this signed email in our dms system.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (MingW32)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJTnwd9AAoJEEWjhuB1kNr9dQcH/2YeZlHEfK/KOPg8XhpOY+4l
3camfFVya8JIzLHsOzhhdSqIItDr7VlGDrjrMgPPiD1abyy9zhcqZ18Kh8sUuFJV
/TA434rrnMJC0xmSzXl4uo+UagyNyCjzwR4TFCGP4Ob6SzPl/jxfrcfO5yXEdF1I
X6wgQUmnb3ZLczdPVXsKpwpVIGqX7diwe1CAZKxCmjZo9rr/MmDLLl7AjYq/WQDT
uOYqXs2IasOIiTGpYrqexBpDn1qRUNiKVgFSRUTfTjYGXYij9P635WTfeE1bQrn1
HpT9hKhipYPkFcELAor7asqAcnE0lc4Oy9NV2bUryss8ic/pkhiXvlohA3MpCDA=
=+IbK
-----END PGP SIGNATURE-----

公钥:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (MingW32)

mQENBFOfBmkBCAC6gH9rR185hiCADttaQeUp9Jc+4Zzx60E+ogWd33Tb1dNvK/IK
wqpnRpYI1CHVpqX0xWy8Ylcw3rLpPJ6BUzO3hWFLRMXAIXiemV/+VKrKysgm1Xdg
1PSAVfqmgkXLEEGGSj2OHNA0VVnl1G8AI8/SMpLqhS3PMz3X1nmBv4hLohugLla9
AVdYp6Me5OAWfjHswkUxCvc/fSh2ufFSnFxgjUibIyn+GP5qG8Wc+GjrBzTLzjA7
LvP198fWIHQ5w342F3WE8/9ec+1ir/a4japcFodRibXBEqltF+BXgk9pVcEXTd8O
FCxygrnSkWioj9Qf5uyjuKfV1F7Wq/Nu5uPZABEBAAG0JkFiaGluYXYgQWdnYXJ3
YWwgPGFiaGluYXZAdHJ1dGVjaC5vcmc+iQE/BBMBAgApBQJTnwZpAhsjBQkJZgGA
BwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQRaOG4HWQ2v2F9Af/RAKCz0uo
xqrVe1MXqCe9ZCPSwlHGH4X4NtQbo7FTYy7K2fo9ucoKI4c2lHZA+Ef1K6BhZG34
IlXPSwy8nhTWJl7pi/xo7gEDlnHJMJCGvQcdtm4lkp39V2cy/Y0lS9V/EYmiesIX
tmPwwyYxo85jNsdmbjQKDTv5mcir9AebllCk2NlrxpyTO8oAnp1peHaHHq+U92e3
ZipHEiuAvE0U6WU/fA7tHoWoUor9AUm1hE5mSsyi+do4o/YJqGEgAss62v0npcBx
oyHoHum5XUgZ1kjvq40Mzkxo9N6vU7P7ULyt9FZylM+pk9XEqiz8IGTPW6JGiJS2
WmhJli2Szl1xgLkBDQRTnwZpAQgA27UvNu/m61pZwTBSQAVjLNJnJTlU4yh/DxKU
B3opw7JvvgXYB3VS9AyqSYaIJTcziCBZRewMH+WVpZwRk9SFMyeyNhuk9SGeGU9s
vyE5dGPa/U5zpvhaqn//CMdRr+wf6XeBKjzc9eKgWMrPLhzlHZ6kzLsbRsalOd4x
0M3aeO4SV00HFFfXVfJplNB8/zsHNNqtF5ACz9DX69p1GWJD6AAlu/s04xkkUScr
M2B5lHm6iU6NmfP1GeTD+rOyigcOrSlAL4QGIzGDfoDJOy9UYtk+YOv8UBa3IpG0
7sARkd+MZGUOgPWIDYQLiSi+9opFHtn4EzrvuUP3Zj1kN4ZUTwARAQABiQElBBgB
AgAPBQJTnwZpAhsMBQkJZgGAAAoJEEWjhuB1kNr9kHoIAKnjEAiH53ZrWYuummPR
PRztZL1K7LkxEAxQ00V+PMrg4wNlp1WW5Vl3X0jB5FqUTUmI/65MhoWa+Ucqg31c
pUOpw5OHK/cyrsscj+gL3nknhswWcvqBNQuiB8UO7Kt89yFYysA754sADKE+nDBM
D+kmlH4u3vvKep0hZ+gzvH3AOZDhijKJYN9zMMf/gtwZhlEm/N+yBpkP1sxcFsJ+
V5hduu4sqJnAcCWg3V/JXonAOZGPS/GE+wXt4Om1D/6RcBBtrBGwh/ezBFS/gSio
vGRcFzZYRhM1rMEu82raZ3ji3X/5fOjxvhSXdrajG3LX8s2gCk+a0nGDi3MYs5l0
p14=
=cn4r
-----END PGP PUBLIC KEY BLOCK-----

我想用 php 编写一个程序来验证数字签名。我有发件人的公钥。我尝试从下载 GnuPG 库这个网站 https://www.gnupg.org/download/index.html,但没有被下载。

还有其他办法吗?我该怎么做呢?任何帮助将不胜感激。


PHP 已经带来了用于连接 GnuPG 的模块 http://php.net/manual/en/function.gnupg-verify.php,这相当容易使用。

GnuPG 必须已经安装,在 Linux 服务器上通常是这样,在 Windows 机器上我听说让 PHP 与 GnuPG 一起运行相当困难。

For 验证签名, use gnupg_verify(...) http://php.net/manual/en/function.gnupg-verify.php,来自链接的 PHP 文档的示例:

<?php
$plaintext = "";
$gpg = new gnupg();
// clearsigned
$info = $gpg -> verify($signed_text,false,$plaintext);
print_r($info);
// detached signature
$info = $gpg -> verify($signed_text,$signature);
print_r($info);
?>

你不得不导入签名者的公钥 http://php.net/manual/en/function.gnupg-import.php在验证之前(如果尚未完成)。

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

使用php验证数字签名 的相关文章

  • 为什么这评估为 true

    为什么这评估结果为真
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • 更改 Woocommerce 中“我的帐户”页面上的标题

    我见过大量有关如何使用 WooCommerce 我的帐户仪表板重新排序 更改导航和页面的示例 但我一生都无法弄清楚如何更改每个部分的主要标题 我的帐户 订单 下载 地址等 我已经搜索过模板 但没有任何乐趣 我尝试使用条件 php 注释来回显
  • Smarty 如果 URL 包含

    使用 Smarty 标签我想确定 URL 是否包含单词 例如 if smarty get page contains product php 我知道 contains 不存在 但是我怎样才能轻松地编写类似的东西来实现上述代码呢 所有 PHP
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • 媒体的 Google Cloud Storage 签名网址

    我已经建立了一个视频网站 为用户提供 m3u8 和关联的 ts 文件 我不希望媒体文件免费可用 所以我所做的是 当用户在网站上时 在 mysql 中使用他们的 IP 和令牌创建一个会话 当他们请求特定媒体子域 mp4 domain com
  • 在 PHP 中比较两个对象的最快方法是什么?

    假设我有一个对象 在本例中为 User 对象 并且我希望能够使用单独的类来跟踪更改 用户对象不必以任何方式改变它的行为才能发生这种情况 因此 我的单独的类创建它的 干净 副本 将其存储在本地某个位置 然后可以将 User 对象与原始版本进行
  • Google Cloud SQL 上的故障转移如何运作?

    我打算将 PHP 应用程序 从 Google Cloud Platform 外部的服务器 连接到 Google Cloud SQL 我想知道如何设计应用程序以正确地对其数据库进行故障转移 根据manual https cloud googl
  • 如何在HTML中的PHP中注释掉HTML和PHP?

    这是我想注释掉的一行代码 h1 class post title a href title a h1 一种流行的注释方法是分别注释 html 和 php 有一个更好的方法吗
  • 如何纠正这个非法字符串偏移?

    我收到此错误 警告 第 32 行 home mysite public html wp content themes evento lib php extra class php 中的非法字符串偏移 type 我意识到文件中的这部分代码是错
  • 对 SimpleXML 数据进行排序和分组

    我正在对 XML 文件中的出版物数据进行排序和分组 我目前使用的方法效果很好大部分情况下 尽管我觉得有一种更有效的方法来完成我想要完成的任务 以下是目标节点的示例
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • Facebook PHP SDK - 如何获取访问令牌?

    我正在尝试从我的应用程序在用户的 Facebook 墙上发帖 用户授予应用程序在他的墙上发布的权限 并且我在数据库中有用户ID 我需要自动发送帖子 而无需用户再次登录 我的代码是 try require once dirname FILE
  • Gradle SignArchives 无法读取 Secret Key

    我正在尝试将我的 Java 库发布到 Maven Central 其中一部分涉及使用signinggradle 插件来签署工件 我需要在不使用密钥环文件的情况下对其进行签名作为此处的文档 https docs gradle org curr
  • 如何在 phalcon 框架中同时连接多个数据库在模型类中同时使用两个而不仅仅是一个

    在我的代码中我有两个数据库ABC and XYZ 我想在同一模型中使用两个数据库 而不是 phalcon 中的解决方案是什么 如何为此实现多个数据库连接 one
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 从字符串中获取数字

    我有一个字符串 例如 lorem 110 ipusm 我想获取 110 我已经尝试过这个 preg match all 0 9 string ret 但这正在返回 Array 0 gt 1 1 gt 1 2 gt 0 我想要这样的东西 Ar
  • 如果产品重量超过1000克,如何以公斤为单位显示

    在 Storefront 主题中 我使用下面的代码将格式化重量从 1000g 更改为 1kg add action woocommerce after shop loop item title show weight 10 function

随机推荐

  • 在 Reactjs 中迭代数组

    const cal days Sun Mon Tue Wed Thu Fri Sat const cal months Jan Feb March April May June July August Sept Oct Nov Dec co
  • 组合 Group-Object 和 ForEach-Object?

    我正在开发一个名为Merge Xsd可以合并相似的 XML 模式 它需要一个路径列表 加载模式 合并它们 并生成一个XMLDocument作为输出 特定文件名的所有模式都被认为是 相似的 所以我正在做的就是获取特定目录结构中的所有子项 根据
  • 使用useEffect获取数据时避免使用旧数据

    我的问题是 当自定义挂钩使用useEffect with useState 例如 为了获取数据 在依赖项更改之后但在 useEffect 被触发之前 自定义挂钩会返回过时的数据 来自状态 您能建议一种正确 惯用的方法来解决这个问题吗 我正在
  • 针对具有大量聚合的大型集群的 ElasticSearch 设置

    背景和当前状态 我们正在将集群从 Cassandra 迁移到完整的 ElasticSearch 集群 我们平均索引文档为每秒约 250 300 个文档 在 ElasticSearch 1 2 0 中 它代表每天约 8Go generic i
  • Android 如何避免内存不足错误

    我有很多图像 大约有 500 张分布在 20 个左右的片段中 这些图像都非常小 并且加载得很好 但是我给用户提供了 3 种不同类型的图像的选择 现在如果用户更改图像我收到 OOM 错误 所以我认为这是我处理图像的方式 我认为我需要先回收旧图
  • 基于另一个字段更改 SSRS 中值字符串中特定值文本颜色的表达式

    我的 SSRS 报告中有一个字段 其中包含一串用逗号分隔的数字 来自 SQL 中的合并选择 它看起来像 12 91 160 171 223 如果该值也在报告的另一个字段中 我只想更改该字段中一个特定值 例如 160 的文本颜色 我已经有了这
  • 使用 BigDecimal 计算小数点后的最大位数

    小数点后最多可以有多少位BigDecimalJava 中的值 它 几乎 是无限的 如果将比例设置为整数的最大值 则可以存储大约 20 亿位小数点后的数字 但如果尝试这样做 可能会耗尽内存 如果您需要存储如此多的数字以至于限制成为问题 那么您
  • 如何将UIImage插入到UITextView中

    我正在开发一个可编辑的笔记本类型项目 它随时由一些文本和图像组成 在UITextView如果我们将图像添加为子视图 则帧是固定的 但我有editable选项 所以我必须将图像另存为NSString格式为UITextView 但它应该在 ui
  • AutoMapper 4.2 和 Ninject 3.2

    我正在更新我的一个项目以使用 AutoMapper 4 2 并且遇到了重大更改 当我seem为了解决上述更改 我并不完全相信我已经以最合适的方式做到了这一点 在旧代码中 我有一个NinjectConfiguration 和AutoMappe
  • Android 2.1 WebView 中的 SIGSEGV

    在 Android 2 1 中使用 WebView 时 我间歇性地收到 SIGSEGV SIGSEGV 位于 system lib libwebcore so 内 此 WebView 实现是否存在已知问题 我可以解决该问题以避免 SEGV
  • 由于零而始终将滑块求和到 100% 失败的算法

    这是 应该是 一个函数 它确保多个滑块值的总和always总计为globalTotal 用户可以手动更改滑块值changer value然后当将此函数应用于other滑块 它可以确定它们的新或endVal 它需要startVal需要更改的滑
  • 初学者使用 Linqpad 运行非常基本的 linq to sql 查询的步骤

    尝试使用 Linq 学习LinqPad http www linqpad net 并对如何开始感到沮丧 假设我想编写一个 C 表达式和一个 C 语句 其中 SQL Server 中有一个名为 Products 的表 并且我想提取价格大于 5
  • 使用 lucene/java 标记名称

    我有我公司所有员工的姓名 超过 5000 名 我想编写一个引擎 它可以在在线文章 博客 维基 帮助文档 中即时查找名称 并用用户电子邮件的 mailto 标签标记它们 截至目前 我计划从文章中删除所有停用词 然后在 lucene 索引中搜索
  • 手动修改 DOM 的 innerHTML 会停止 ReactJS 监听器

    我正在学习 ReactJS 和 Node Express 生态系统 对我来说是早期 我有一个基本的 ReactJS 文件 包括组件定义和渲染调用 它本身按预期工作 为了快速 轻松地进行调试 昨天我在客户端代码中进行了以下更改 Added H
  • 在运行时将设计时面板添加到 TabPage

    我希望在设计时有一个带有控件的面板 但我想在运行时将此面板添加到 TabControl 的所需 tabPage 中 我写了这样的东西 没有用 面板没有显示在选项卡页中 请帮我 panel2 Parent tabGuy TabPages 0
  • XPath - 提取两个节点之间的文本

    我的 XPath 查询遇到问题 我必须解析一个 div 它被划分为未知数量的 部分 其中每一个都由 h5 和部分名称分隔 可能的部分标题列表是已知的 并且每个标题只能出现一次 此外 每个部分可以包含一些 br 标签 所以 假设我想提取 Se
  • 尽管在 Windows 的 VS Code 中安装了字体并激活了连字,但仍无法显示 FiraCode

    在我的设置中我有 editor fontLigatures true editor fontFamily Fira Code Comic Sans MS Tahoma Consolas 我已经尝试过 根据this https github
  • 在 IIS7 中重写映射 — 如何使匹配项选择性地包含尾部斜杠?

    我已经阅读了几种组合的前 30 名 Google 搜索结果IIS rewrite map condition等等 但我在 microsoft com 网站或其他地方找不到任何像样的文档 我在 IIS7 中有一堆重写映射 我想处理它们 无论它
  • svn:ignore 的模式匹配字符

    在网上回应一个问题 svn ignore 模式的语法 记录在某处 唯一的图案 我可以在中找到匹配的字符 svn ignore 下的 SVN 书是 颠覆书 svn ignore http svnbook red bean com en 1 0
  • 使用php验证数字签名

    我有一封经过数字签名的电子邮件 email BEGIN PGP SIGNED MESSAGE Hash SHA1 The below email has been digitally signed for test purposes We