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内存管理之谁动了我的内存
Jun 20 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
php不写闭合标签的好处
Mar 04 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
Nov 25 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
深入php list()函数的详解
2013/06/05 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
浅谈React高阶组件
2018/03/28 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
Python 文件管理实例详解
2015/11/10 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
python检测服务器端口代码实例
2019/08/31 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
你的自行车健身专家:FaFit24
2016/11/16 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
电子商务毕业生求职信
2013/11/10 职场文书
生物专业个人自荐信范文
2013/11/29 职场文书
省三好学生申请材料
2014/01/22 职场文书
学校联谊活动方案
2014/02/15 职场文书
离婚起诉书范本
2015/05/18 职场文书
征求意见函
2015/06/05 职场文书
师范生见习自我总结
2015/06/23 职场文书
2019求职信大礼包
2019/05/15 职场文书