今天用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/

最新文章

  1. Maven pom文件常用配置,转载
  2. aliyun阿里云Maven仓库地址——加速你的maven构建
  3. loadrunner生成随机数
  4. 科技来电:不容错过的win10轻度美化攻略
  5. Java 集合深入理解(6):AbstractList
  6. 1049: [HAOI2006]数字序列 - BZOJ
  7. 安装PHP出现make: *** [sapi/cli/php] Error 1 解决办法
  8. Java——(四)Collection之Set集合TreeSet类
  9. C/C++基础概念
  10. redis学习研究--Redis作者谈Redis应用场景
  11. 使用 rsync 同步
  12. struts2.1.6教程二、struts.xml配置及例程
  13. [洛谷P1198/BZOJ1012][JSOI2008] 最大数 - 树状数组/线段树?
  14. 关于中国菜刀,如何"切菜"
  15. 1ubuntu安装虚拟机
  16. 解决Ubuntu中文显示为乱码
  17. L1&L2 Regularization的原理
  18. 火币网API文档——WebSocket API错误码
  19. ionic 实现微信朋友圈分享的完整开发流程
  20. JScript 正则表达式语法表

热门文章

  1. Delphi MD5
  2. 四、React创建组件、 JSX使用、绑定数据、引用图片方式、数组(列表)循环输出
  3. python+selenium 发送邮件
  4. 在登陆退出时候使用Vuex
  5. 解决CGrIdCtrl合并单元格后继续拆分后的问题
  6. 用AD 输出BOM时提示failed to open excel template
  7. 大数据高可用集群环境安装与配置(10)——安装Kafka高可用集群
  8. 修改虚拟机ip
  9. Essay写作关键:严谨的逻辑关系
  10. 初学C#之变量、占位符、转义符、还有就是类型转换