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 5.0对象模型深度探索之绑定
Sep 05 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
ThinkPHP模板自定义标签使用方法
Jun 26 PHP
php实现无限级分类
Dec 24 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
php防止表单重复提交实例讲解
Feb 11 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 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 文件类型判断代码
2009/03/13 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
JavaScript 面向对象之命名空间
2010/05/04 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
js定时器实例分享
2016/12/20 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
linux面试题参考答案(10)
2016/10/26 面试题
环境工程专业个人求职信
2013/12/05 职场文书
经济担保书范文
2014/04/02 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
社区文明创建工作总结2015
2015/04/21 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
创业计划书之家教托管
2019/09/25 职场文书