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源代码
Oct 09 PHP
php 破解防盗链图片函数
Dec 09 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 PHP
ThinkPHP模板替换与系统常量及应用实例教程
Aug 22 PHP
19个Android常用工具类汇总
Dec 30 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
php提供实现反射的方法和实例代码
Sep 17 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
PHP中多字节字符串操作实例详解
Aug 23 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
神族 Protoss 历史背景
2020/03/14 星际争霸
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
php读取3389的脚本
2014/05/06 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
举例讲解Node.js中的Writable对象
2015/07/29 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
vue cli 全面解析
2018/02/28 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
鲜果饮品店创业计划书
2014/01/21 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
党员查摆剖析材料
2014/10/10 职场文书
Java SSM配置文件案例详解
2021/08/30 Java/Android