-1

出于某种原因,我让这个脚本正常工作,但是一旦我尝试解码 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);
?>
4

1 回答 1

2

openssl 似乎存在一个错误,这里报告了https://bugs.php.net/bug.php?id=60936看起来它可能与您遇到的问题相同。

于 2012-10-23T05:14:34.677 回答