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&amp;java(三)
Oct 09 PHP
php在线生成ico文件的代码
Oct 09 PHP
IStream与TStream之间的相互转换
Aug 01 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
php 使用array函数实现分页
Feb 13 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
PHP中Session ID的实现原理实例分析
Aug 17 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 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中获得视频时间总长度的另一种方法
2011/09/15 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
python中对_init_的理解及实例解析
2019/10/11 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
人事行政主管岗位职责
2013/12/22 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
调研汇报材料范文
2014/08/17 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
2014年终个人工作总结
2014/11/07 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
雷锋之歌观后感
2015/06/10 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS