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会员权限控制实现原理分析
May 29 PHP
数据库中排序的对比及使用条件详解
Feb 23 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
Yii2框架使用计划任务的方法
May 25 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
PHP生成随机字符串实例代码(字母+数字)
Sep 11 PHP
php源码的使用方法讲解
Sep 26 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在window iis的莫名问题的测试方法
2013/05/14 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
非常漂亮的JS代码经典广告
2007/10/21 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
jquery ajax jsonp跨域调用实例代码
2013/12/11 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
VueJS全面解析
2016/11/10 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
jQuery实现QQ空间汉字转拼音功能示例
2017/07/10 jQuery
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
Python实现批量修改文件名实例
2015/07/08 Python
python实现计算倒数的方法
2015/07/11 Python
TensorFlow实现创建分类器
2018/02/06 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
《中华少年》教学反思
2014/02/15 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
工作表扬信范文
2015/01/17 职场文书
六个好看实用的 HTML + CSS 后台登录入口页面
2022/04/28 HTML / CSS