PHP实现超简单的SSL加密解密、验证及签名的方法示例


Posted in PHP onAugust 28, 2017

本文实例讲述了PHP实现超简单的SSL加密解密、验证及签名的方法。分享给大家供大家参考,具体如下:

1. sign签名代码:

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;
}

2. verify 验证代码:

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;
}

3. 解密代码

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中ADODB类详解
Mar 25 PHP
也谈php网站在线人数统计
Apr 09 PHP
PHP框架Swoole定时器Timer特性分析
Aug 19 PHP
Laravel 4 初级教程之安装及入门
Oct 30 PHP
PHP实现懒加载的方法
Mar 07 PHP
PHP缓冲区用法总结
Feb 14 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
Apr 23 PHP
laravel orm 关联条件查询代码
Oct 21 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 #PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 #PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 #PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 #PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 #PHP
PHP实现的简单sha1加密功能示例
Aug 27 #PHP
You might like
php标签云的实现代码
2012/10/10 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
php中使用sftp教程
2015/03/30 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
js实现弹幕墙效果
2020/12/10 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
浅谈MySQL中的触发器
2015/05/05 Python
python获取目录下所有文件的方法
2015/06/01 Python
安装python及pycharm的教程图解
2019/10/10 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
最新远光软件笔试题面试题内容
2013/11/08 面试题
高校学生干部的自我评价分享
2013/11/04 职场文书
会议开场欢迎词
2014/01/15 职场文书
烹调加工管理制度
2014/02/04 职场文书
雷人标语集锦
2014/06/19 职场文书
优秀党支部申报材料
2014/12/24 职场文书
汇报材料怎么写
2014/12/30 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
pytorch Dropout过拟合的操作
2021/05/27 Python
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python