如何在使用openssl_verify()返回false时进行调试?
问题描述:
我用PHP来验证符号的字符串,它是由JAVA,岗位代码,如:如何在使用openssl_verify()返回false时进行调试?
$result = (bool)openssl_verify($sign_data, $sign, $public_key);
openssl_free_key($public_key);
while ($msg = openssl_error_string())
echo $msg . "<br />\n";
var_dump($result);die;
然后我得到了false
,我GOOGLE了一整天,但没有answer.Can你我一些忠告。
PS:var $public_key
是RSA的公钥,我检查过它,是resource(1183) of type (OpenSSL key)
。
答
首先,你必须保持public_peky.pem被right.Then约VAR $sign_data
,认为AOUT做urldecode()
一次,甚至twice.About VAR $sign
,它总是需要做base64_decode()
。
['openssl_error_string'](https://secure.php.net/manual/en/function.openssl-error-string.php)似乎是一个很好的开始。 –
谢谢,我尝试'openssl_error_string',它说:'错误:04091077:rsa例程:INT_RSA_VERIFY:错误的签名长度' – gangzi
所以你知道sign_data和这个公钥的符号不匹配。 –