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 相关文章推荐
如何去掉文章里的 html 语法
Oct 09 PHP
PHP个人网站架设连环讲(四)
Oct 09 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
PHP sprintf()函数用例解析
May 18 PHP
php中对2个数组相加的函数
Jun 24 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
php中HTTP_REFERER函数用法实例
Nov 21 PHP
jQuery Mobile + PHP实现文件上传
Dec 12 PHP
php生成txt文件实例代码介绍
Apr 28 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 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相关资料
2006/10/09 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
用javascript实现给图片加链接
2007/08/15 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
JS中类或对象的定义说明
2014/03/10 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
基于python代码批量处理图片resize
2020/06/04 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
澳大利亚连衣裙和女装在线:Esther
2017/11/11 全球购物
英语自我评价范文
2014/01/24 职场文书
临床专业自荐信
2014/06/22 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
一文解答什么是MySQL的回表
2022/08/05 MySQL