码迷,mamicode.com
首页 > Web开发 > 详细

php中openssl_pkey_get_private()函数遇到false的问题 解决办法

时间:2020-01-07 22:51:40      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:pen   key   hunk   私钥   http   字符串   tar   不同   代码   

今天用openssl_pkey_get_private()函数遇到了一个大坑:

如果你的私钥文件(private_key.pem)是

-----BEGIN PRIVATE KEY-----字符串字符串-----END PRIVATE KEY----- 
要是私钥文件的字符串全部写在一行 此函数就会返回false,我的php版本是5.6版本的

正常使用两种办法

1.$privateKey = openssl_pkey_get_private($privateKey);

2.$privateKey = openssl_pkey_get_private(file_get_contents($privateKey));

尤其第二种很容易遇到问题而导致返回false. 原因不明.

解决方案:只需要把文件中的字符串换行就好,如下所示
-----BEGIN PRIVATE KEY-----
字符串字符串
字符串字符串
-----END PRIVATE KEY-----
以下两段代码.不同环境下都能用.有时候返回false换另一种试试

代码一

$pem = "-----BEGIN RSA PRIVATE KEY-----\n" .$content."\n-----END RSA PRIVATE KEY-----";
$pkeyid = openssl_pkey_get_private($pem);
openssl_sign($data,$sign,$pkeyid,OPENSSL_ALGO_MD5);
$t=base64_encode($sign);

代码二(特别注意换行)

$content=chunk_split($content, 64, "\n");
$pem = "-----BEGIN RSA PRIVATE KEY-----\n" .$content."-----END RSA PRIVATE KEY-----";
$pkeyid = openssl_pkey_get_private($pem);
openssl_sign($data,$sign,$pkeyid,OPENSSL_ALGO_MD5);
$t=base64_encode($sign);

 来源:http://www.1994july.club/

php中openssl_pkey_get_private()函数遇到false的问题 解决办法

标签:pen   key   hunk   私钥   http   字符串   tar   不同   代码   

原文地址:https://www.cnblogs.com/1994july/p/12163957.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!