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下使用SMTP发邮件的代码
Jan 10 PHP
php入门小知识
Mar 24 PHP
ajax+php打造进度条代码[readyState各状态说明]
Apr 12 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
php实现统计邮件大小的方法
Aug 06 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
PHP开发框架kohana3 自定义路由设置示例
Jul 14 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
php禁止某ip或ip地址段访问的方法
Feb 25 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
phpstorm 配置xdebug的示例代码
Mar 31 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
phpMyAdmin链接MySql错误 个人解决方案
2009/12/28 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
JavaScript 常用函数
2009/12/30 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
Python 文件操作实现代码
2009/10/07 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
wxPython的安装与使用教程
2018/08/31 Python
django实现支付宝支付实例讲解
2019/10/17 Python
Python 如何实现访问者模式
2020/07/28 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
学雷锋宣传标语
2014/06/25 职场文书
大学生心理活动总结
2014/07/04 职场文书
五心教育心得体会
2014/09/04 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
详解jQuery的核心函数和事件处理
2022/02/18 jQuery