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与javascript对多项选择的处理
Oct 09 PHP
几个学习PHP的网址
Nov 25 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
dedecms模版制作使用方法
Apr 03 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
Jul 03 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
Feb 04 PHP
php图片裁剪函数
Oct 31 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 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购物网站支付paypal使用方法
2010/11/28 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
2013/11/26 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
JS设置网页图片vspace和hspace属性的方法
2015/04/01 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
点击页面任何位置隐藏div的实现方法
2016/09/05 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
python获取糗百图片代码实例
2013/12/18 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
优乐美广告词
2014/03/14 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
销售员岗位职责
2015/02/10 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript