php中openssl_pkey_get_private()函数遇到false的问题 解决办法
今天用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);
php中openssl_pkey_get_private()函数遇到false的问题 解决办法的更多相关文章
- 配置IIS提示打开目录浏览时的问题:未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的解决办法
错误消息: 未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的 ...
- 关于pycharm中pip版本10.0无法使用的解决办法
背景: 近期在利用 pycharm 安装第三方库时会提示 pip 不是最新版本, 因此对 pip 进行更新,但是生成最新版本之后, pip 中由于缺少 main 函数,导致在 pycharm 中无法自 ...
- vue中router-link的click事件失效的解决办法
title: vue中router-link的click事件失效的解决办法 toc: false date: 2018-12-04 16:28:49 categories: Web tags: vue ...
- [转]iOS Safari 中click点击事件失效的解决办法
iOS Safari 中click点击事件失效的解决办法 问题起因: 在微信公众号开发(微站)过程中用jquery的live方法绑定的click事件点击无效(不能执行) 问题描述 当使用委托给一个元素 ...
- python matplotlib plot 数据中的中文无法正常显示的解决办法
转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...
- eclipse中的js文件报错的解决办法
在使用别人的项目的时候,导入到eclipse中发现js文件报错,解决办法是关闭eclipse的js校验功能. 三个步骤: 1. 右键点击项目->properties->Validation ...
- Spring MVC普通类或工具类中调用service报空空指针的解决办法(调用service报java.lang.NullPointerException)
当我们在非Controller类中应用service的方法是会报空指针,如图: 这是因为Spring MVC普通类或工具类中调用service报空null的解决办法(调用service报java.la ...
- Android 在 Fragment 中使用 getActivity() NullPointException 的思考和解决办法
问题: 使用 AS 在 Fragment 中调用 getActivity() 方法的时候会出现可能为空指针的提醒 使用 monkey 多次十万次测试,会出现 getActivity() NullPoi ...
- linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法
linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法 http://blog.csdn.net/w616589292/article/details/38274475 dos2unix ...
随机推荐
- 第二阶段scrum-6
1.整个团队的任务量: 2.任务看板: 会议照片: 产品状态: 消息收发功能正在制作
- SparkStreaming 笔记
简介 SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展.高吞吐量.容错的准实时数据流处理. 实时数据的来源可以是:Kafka, Flume, Twitter, Zer ...
- oracle中判断"非"
在oracle中判断为"非"最常见的两种情况,一个是"不等于",一个的"非空". 通过查找资料得知,oracle中判断不等于的方法有好多种: ...
- 逆向-PE头解析
目录 PE头解析 数据结构 IMAGE_DOS_HEADER IMAGE_NT_HEADERS 区块 PE头解析 PE 格式是Windows系统下组织可执行文件的格式.PE文件由文件头和对应的数据组成 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-bold
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- javascript如何获取复选框中的值?
思路:获取checkbox对象→循环checkbox数组,根据checked属性判断是否选中→使用value属性获取选中项的值.实例演示如下: 1.HTML结构 <form> <in ...
- Fedora 32大变化:将删除Python 2及其软件包
导读 虽然Fedora 30还没有上市,Fedora 32直到大约一年后才上市,但我们已经知道一个很大的变化:删除Python 2和包依赖它.随着Fedora 32将于2020年上半年推出,超过了Py ...
- TX2_安装view_team
TX2上的帐号是:1317149963,dc200820305233 参考网站:https://blog.csdn.net/qq_33512213/article/details/90050792 安 ...
- SpringAOP切入点的表达式
1. 常用的切入点表达式分为: (1)按类型匹配:within 关键字 (2)按函数匹配:execution (3)按bean的id匹配:bean 2.按类匹配的写法 匹配到具体的类:<aop ...
- 五、SAP中定义变量和给变量赋值
一.代码如下: 二.执行效果图,如下: