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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 PHP
php桌面中心(一) 创建数据库
Mar 11 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
PHP封装CURL扩展类实例
Jul 28 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
PHP搭建大文件切割分块上传功能示例
Jan 04 PHP
详解php框架Yaf路由重写
Jun 20 PHP
php简单计算权重的方法示例【适合抽奖类应用】
Jun 10 PHP
php7中停止php-fpm服务的方法详解
May 09 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 #PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 #PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 #PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 #PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 #PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 #PHP
You might like
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
js无刷新操作table的行和列
2014/03/27 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
详解react-router如何实现按需加载
2017/06/15 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
Python的面向对象思想分析
2015/01/14 Python
利用Python如何生成便签图片详解
2018/07/09 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Django缓存系统实现过程解析
2019/08/02 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫