如何使用openssl验证数字签名

Aar*_*ino 4 php security openssl digital-signature

我正在使用第三方信用卡处理服务(Paybox),在成功交易后,重定向回网站,并在URL中签名作为安全措施,以防止人们操纵数据.它应该证明请求源自此服务.所以我的成功URL看起来像这样:

/success.php?signature=[HUGE HASH]

我不知道从哪里开始验证这个签名.这项服务确实提供了一个公钥,我认为我需要创建一个私钥,但除此之外我不知道.

我对linux非常好,我知道我必须运行一些openssl命令.我正在用PHP编写验证脚本,它也有本机openssl()函数.

如果有人能用一些伪代码甚至功能代码向我推进正确的方向,我将非常感激.谢谢.

小智 5

这是我的代码,它对我有用.希望我能帮助你.

$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";
Run Code Online (Sandbox Code Playgroud)