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 ...
随机推荐
- Node.js 文件系统模块
章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...
- java虚拟机之JVM生命周期
java生命周期分为以下三部分:启动,运行,消亡. 启动.启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的 ...
- C++编程学习(五) C++ 存储类
一.auto 存储类 根据初始化表达式自动推断被声明的变量的类型. auto f=3.14; //double auto s("hello"); //const char* aut ...
- python的库有多少个?python有多少个模块?
这里列举了大概500个左右的库: ! Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...
- Spring框架之一 读取配置文件
以下代码都是来源于官方源码(Spring-4.3.18.RELEASE),此处只是为自己以后深啃先布局出大概流程,请各看官不要浪费时间看 说明: .. 表示省略代码, // 后的如果不是源码自带则为当 ...
- SQL基础之JDBC、连接池
JDBC JDBC四个核心对象 这几个类都是在java.sql包中 DriverManager(类): 数据库驱动管理类.这个类的作用:1)注册驱动; 2)创建java代码和数据库之间的连接,即获取C ...
- h5页面乱码-设置编码
1.h5页面正常,重定向以后出现乱码,如图所示. 解决办法:重定向的时候 需要设置编码. 2.文件charset已经是utf-8,页面还是乱码,文件保存的格式也要是utf-8的哦
- 基本pipline用法
#!groovynode { stage('代码获取') { checkout([$class: 'SubversionSCM', additionalCredentials: [], exclude ...
- Dlib笔记一:基本数据结构和基本操作
编译了Dlib之后就开始想着怎么用起来,先从基本的数据类型说起吧,因为是图像,所以难免会跟OpenCV的数据类型比较.在Dlib中,图像是用二维阵列(array2d)或者矩阵(matrix)来表示的, ...
- VS2017中使用ReportViewer控件,vs2017找不到Microsoft Rdlc Report Designer for Visual Studio
VS2017中没有ReportViewer控件,这个控件用来实现在项目中显示和打印关系数据库中的表比较容易,特别是想要打印的时候,这个比用DataGridView和PrintDocument要简单一些 ...