如何在使用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)

+1

['openssl_error_string'](https://secure.php.net/manual/en/function.openssl-error-string.php)似乎是一个很好的开始。 –

+0

谢谢,我尝试'openssl_error_string',它说:'错误:04091077:rsa例程:INT_RSA_VERIFY:错误的签名长度' – gangzi

+0

所以你知道sign_data和这个公钥的符号不匹配。 –

首先,你必须保持public_peky.pem被right.Then约VAR $sign_data,认为AOUT做urldecode()一次,甚至twice.About VAR $sign,它总是需要做base64_decode()