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文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
PHP入门学习的几个不错的实例代码
Jul 13 PHP
php 生成随机验证码图片代码
Feb 08 PHP
基于php iconv函数的使用详解
Jun 09 PHP
微信access_token的获取开发示例
Apr 16 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
Oct 10 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP中的Memcache详解
2014/04/05 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
jQuery 表单验证插件formValidation实现个性化错误提示
2009/06/23 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
javascript整除实现代码
2010/11/23 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
2016/06/21 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
实例讲解CSS3中的box-flex弹性盒属性布局
2016/06/09 HTML / CSS
HTML5视频播放插件 video.js介绍
2018/09/29 HTML / CSS
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
中层干部岗位职责
2013/12/18 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
小学生作文批改评语
2014/12/25 职场文书
撤诉状格式范本
2015/05/19 职场文书
导师鉴定意见
2015/06/05 职场文书
新学期主题班会
2015/08/17 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书