我试图在PHP中使用OpenSSL函数进行RSA签名/验证.当我尝试openssl_verify使用我的公钥时,我收到此错误:error:0906D06C:PEM routines:PEM_read_bio:no start line,但函数本身正常工作(如果消息被修改则返回0,如果完整则返回1).openssl_sign工作良好.
我该如何解决?
目前,我使用openssl生成的公钥:
define("SC_MSG_PUBLIC", <<<EOD
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALjPcOckMHDVLiUstcRwwx8kF5PzsiEs
rskyndWisbXMLU9BHomXwL7Qg2L91jE+sNSobkzBDF41CbwDiNlofZUCAwEAAQ==
-----END PUBLIC KEY-----
EOD
);
Run Code Online (Sandbox Code Playgroud)
任何想法为什么这个错误触发,但事情工作正常?
尝试从私有生成公钥,并使用它,但它似乎完全相同,相同的错误消息:-S
$pkey = openssl_pkey_get_private(SC_MSG_PRIVATE);
$keyDetails = openssl_pkey_get_details($pkey);
file_put_contents('c:\publickey', $keyDetails['key']);
Run Code Online (Sandbox Code Playgroud)
此外,我已经尝试安装所有新版本(PHP 5.3.1,OpenSSL 1.0.0a) - 结果相同.而且,我在窗户上.