出于某种原因,我让这个脚本正常工作,但是一旦我尝试解码 JSON,脚本就开始搞砸了。我恢复到旧脚本,它仍然无法正常工作。它在下面。$result 一直给我 0 如果 PHP 文档正确则意味着验证失败。我已经仔细检查了 public_key.pem 以查看它是否正确。我还检查了是否正在发送签名数据和签名以及它们是否正在发送。这个脚本可能有什么问题?
<?php
$signed_data = $_POST['signedData'];
$signature = $_POST['signature'];
$fp = fopen("./public_key.pem", "r");
$cert = fread($fp, 451);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
$signed_data = trim($signed_data);
$signature = base64_decode($signature);
$result = openssl_verify($signed_data, $signature, $pubkeyid, OPENSSL_ALGO_SHA1);
if ($result == 1) {
echo 'correct';
} else if ($result == 0) {
echo 'fail';
echo '||';
echo $pubkeyid;
echo '||';
echo $signed_data;
} else {
echo 'epic fail';
}
openssl_free_key($pubkeyid);
?>