PHP下SSL加密解密、验证、签名方法(很简单)


Posted in PHP onJune 28, 2020

超级简单,依赖于OpenSSL扩展,这里就不多废话了,直接奉上代码

签名:

function sign($data) {
 //读取私钥文件
 $priKey = file_get_contents('key/rsa_private_key.pem');
 
 //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
 $res = openssl_get_privatekey($priKey);
 
 //调用openssl内置签名方法,生成签名$sign
 openssl_sign($data, $sign, $res);
 
 //释放资源
 openssl_free_key($res);
 
 return $sign;
}

验证:

function verify($data, $sign) {
 //读取支付宝公钥文件
 $pubKey = file_get_contents('key/alipay_public_key.pem');
 
 //转换为openssl格式密钥
 $res = openssl_get_publickey($pubKey);
 
 //调用openssl内置方法验签,返回bool值
 $result = (bool)openssl_verify($data, $sign, $res);
 
 //释放资源
 openssl_free_key($res);
 
 return $result;

解密

function decrypt($content) {
 
 //读取商户私钥
 $priKey = file_get_contents('key/rsa_private_key.pem');
 
 //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
 $res = openssl_get_privatekey($priKey);
 
 //声明明文字符串变量
 $result = '';
 
 //循环按照128位解密
 for($i = 0; $i < strlen($content)/128; $i++ ) {
 $data = substr($content, $i * 128, 128);
  
 //拆分开长度为128的字符串片段通过私钥进行解密,返回$decrypt解析后的明文
 openssl_private_decrypt($data, $decrypt, $res);
 
 //明文片段拼接
 $result .= $decrypt;
 }
 
 //释放资源
 openssl_free_key($res);
 
 //返回明文
 return $result;
}

希望本文所述对大家学习php程序设计有所帮助。

PHP 相关文章推荐
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
php+mysql查询优化简单实例
Jan 13 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP实现过滤各种HTML标签
May 17 PHP
php检测文本的编码
Jul 26 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
PHP中“=&gt;
Mar 01 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
深入浅析php json 格式控制
Dec 24 #PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 #PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 #PHP
php采用session实现防止页面重复刷新
Dec 24 #PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
Dec 23 #PHP
分享PHP计算两个日期相差天数的代码
Dec 23 #PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
Dec 23 #PHP
You might like
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
google 搜索框添加关键字实现代码
2010/04/24 Javascript
javascript中length属性的探索
2011/07/31 Javascript
jQuery操作Select的Option上下移动及移除添加等等
2013/11/18 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
2017/01/17 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
2018/04/20 jQuery
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
大学生最常用的自我评价
2013/12/07 职场文书
安全生产投入制度
2014/01/29 职场文书
商铺消防安全责任书
2014/07/29 职场文书
幼儿生日活动方案
2014/08/27 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
2014年工人工作总结
2014/11/25 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
论文答辩开场白大全
2015/05/27 职场文书
赢在中国观后感
2015/06/02 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python
Python使用openpyxl批量处理数据
2021/06/23 Python