尝试使用以下代码验证收到的签名。
$file = "C:\key_file.pem";
$keypair = Crypt_RSA_KeyPair::fromPEMString(file_get_contents($file));
$public_key = $keypair->getPublicKey();
$rsa_pub_key = Crypt_RSA_Key::fromString($public_key->toString());
$rsa_obj = new Crypt_RSA;
$verify_status = $rsa_obj->validateSign($text,$recieved_signed_sign, $rsa_pub_key) ? 'valid' : 'invalid';
得到错误 致命错误:在C:\ Program Files \ xxxx \ rsa.php中调用未定义的方法PEAR_Error :: getPublicKey()
答案 0 :(得分:0)
看起来你还没有安装梨包Crypt_RSA
为此,您必须安装php-pear,然后使用它安装软件包。
在debian基础系统上,这通常只是做事
sudo apt-get install php-pear
sudo pear i Crypt_RSA
在Windows上我不能告诉你,但我相信你可以很快find howto guides on google。
我也认为你使用的功能需要一个相当新的版本,因此你可能需要升级pear并使用-f开关更新插件
答案 1 :(得分:0)
我的建议:不要使用PEAR的Crypt_RSA,而是使用phpseclib的Crypt_RSA。
PEAR的Crypt_RSA不符合PKCS#1,这意味着使用它生成的签名或密文不会与其他语言互操作,它不支持密码私钥,并且多年来一直没有积极维护。 / p>
有关phpseclib的更多信息: