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面向对象编程快速入门
Dec 14 PHP
生成php程序的php代码
Apr 07 PHP
深入php list()函数的详解
Jun 05 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
php根据年月获取季度的方法
Mar 31 PHP
PHP实现Javascript中的escape及unescape函数代码分享
Feb 10 PHP
Mac OS下配置PHP+MySql环境
Feb 25 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
Mar 06 PHP
curl 出现错误的调试方法(必看)
Feb 13 PHP
PHP实现的回溯算法示例
Aug 15 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 discuz 主题表和回帖表的设计
2009/03/13 PHP
PHP操作Memcache实例介绍
2013/06/14 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
use jscript with List Proxy Server Information
2007/06/11 Javascript
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
python实现xml转json文件的示例代码
2020/12/30 Python
python SOCKET编程基础入门
2021/02/27 Python
毕业生找工作的求职信范文
2013/12/24 职场文书
十八大感想感言
2014/02/10 职场文书
《自然之道》教学反思
2014/02/11 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
革命电影观后感
2015/06/18 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电