当前位置: 首页 > 后端技术 > PHP

openssl_get_publickey返回false问题

时间:2023-03-29 16:13:36 PHP

在本地php7.0环境下读取秘钥是正常的,但是在服务器php5.3环境下就报错了。原因是openssl_get_publickey在读取密钥时返回false。Originalcode:classRsaCrypt{//RSA私钥constPRIVATE_KEY=***/xwjpGSffTRj5C1WDGUxEaunwLdPJ1xhANyjo/E2oBsrrtPUAxl73jOdVeTwmrvGbNZ16YVM/O7btsIJYXtT0nn7uBs+f/yvmkwzyo3QGa1XL9SaxIWx4FG8LrHgM+2VQIDAQABAoGAAYTqvNfB10eEh6d3GeTxa1+mMkPFEOlB+XGx6MrjJMEJNGnh4/KhysvEV3lNyerrMyATbjGcVA+F0tHxeJG1cI8silri14G/Q0iJHBd7KlxWgdN70qGThrpDc7hPEI8O+9tMWHJIo8QCuykwVa9x+2IT+ksNLwJ9qRh0hBL/PjUCQQDvr3NDkqBZSwXcKkXl9MYp2ANsprN1pr4SNMXgfvst0WoX3DnszgiXuibZ82H8g5qWhi767i8ZYNfYrBBTCt2PAkEA4ccWhHzRxIDtH8HjjYK/ODelxwtG5M4u79jQzZGd0UcTswivuFu9OoYuauO+A2N4OldfwN3Bz3X9+l/03JyD2wJBAOpPJywAs/Z2q+TeAnTZw7r2K+rUUA2MkrTzmBltqRjSZpeqt4mypJ3G4eIg1kJnWQEbbePqYmq5zGhJVLAJqCsCQB/LVntvzGZ8tWfMeQv7howXIgxGpUQhWPDDupvITs4i0T5cEcrHeH1eWfkJez+k6VBl74EMeXeKqSpyCtxqWhMCQQCbIc+8qIMHJ/***';/***RSA私钥进入签名*$data:签名前字符串*/publicstaticfunctionsign($data){$key="-----BEGINRSAPRIVATEKEY-----\r\n".$start_key."\r\n-----结束RSA私钥-----";$private_key=openssl_get_privatekey($key);openssl_sign($data,$sign,$private_key);openssl_free_key($private_key);$rsaSign=base64_encode($sign);//将加密后的数据转成base64return$rsaSign;}}试了很多方法,最后用wordwrap拆分key字符串,然后问题来了更改后解决:publicstaticfunctionrsaSign($data){$private_content=wordwrap(self::PRIVATE_KEY,64,"\n",true);$key="-----BEGINRSAPRIVATEKEY-----\r\n".$private_content."\r\n-----结束RSA私钥-----";$private_key=openssl_get_privatekey($key);openssl_sign($data,$sign,$private_key);openssl_free_key($private_key);$rsaSign=base64_encode($sign);//将加密数据转换成base64return$rsaSign;}