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编程效率 引入缓存机制提升性能
Feb 15 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
ThinkPHP 3.2 版本升级了哪些内容
Mar 05 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
Zend Framework框架路由机制代码分析
Mar 22 PHP
php使用正则验证中文
Apr 06 PHP
Yii实现简单分页的方法
Apr 29 PHP
PHP培训要多少钱
Jun 06 PHP
PHP实现小程序批量通知推送
Nov 27 PHP
PDO::beginTransaction讲解
Jan 27 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 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基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
PHP正则表达式笔记与实例详解
2019/05/09 PHP
javascript 模拟点击广告
2010/01/02 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
python根据日期返回星期几的方法
2015/07/06 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
centos7之Python3.74安装教程
2019/08/15 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
运动会广播稿60字
2014/01/15 职场文书
女儿十岁生日答谢词
2014/01/27 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
同意报考证明
2015/06/17 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
详解Python牛顿插值法
2021/05/11 Python
javascript函数式编程基础
2021/09/15 Javascript
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python