我正在使用第三方信用卡处理服务 (Paybox),在交易成功后,该服务会重定向回网站并在 URL 中添加签名作为防止他人操纵数据的安全措施。它应该证明请求源自此服务。所以我的成功 URL 看起来像这样:
/success.php?signature=[大哈希]
我不知道从哪里开始验证这个签名。该服务确实提供了一个公钥,我假设我需要创建一个私钥,但除此之外我不知道太多。
我对 Linux 非常熟悉,而且我知道我必须运行一些 openssl 命令。我正在用 PHP 编写验证脚本,它也有原生的 openssl() 函数。
如果有人可以用一些伪代码甚至功能代码将我推向正确的方向,我将不胜感激。谢谢。
最佳答案
这是我的代码,对我有用。希望我能帮到你。
$sign = "28E5FA795590066E8402B529DB027B8D082A226BE6E53F80D41F763207A11EF9..."; // inline signature. I'm using SHA512
$cert = "your certification"; // ------BEGIN..... END..----
$data = "text"; // 64 charactor for SHA512. It's raw data, not hashed data
$pubkeyid = openssl_pkey_get_public($cert);
$ok = openssl_verify($data, hex2bin($sign), $pubkeyid,OPENSSL_ALGO_SHA512);
if($ok==1) return "Verify"; else return "Unverify";
关于php - 如何使用 openssl 验证数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926704/