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生成Gif图片验证码
Oct 27 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
php多文件上传下载示例分享
Feb 20 PHP
PHP进程同步代码实例
Feb 12 PHP
php超快高效率统计大文件行数
Jul 05 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
php实现word转html的方法
Jan 22 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
php外部执行命令函数用法小结
Oct 11 PHP
thinkphp 验证码 的使用小结
May 07 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
May 26 PHP
php+js实现点赞功能的示例详解
Aug 07 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
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
注意!PHP 7中不要做的10件事
2016/09/18 PHP
PHP的反射机制实例详解
2017/03/29 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
webpack4简单入门实例
2018/09/06 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
python的几种开发工具介绍
2007/03/07 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
简介Django框架中可使用的各类缓存
2015/07/23 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
OpenCV 模板匹配
2019/07/10 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
电子商务毕业生求职信
2013/11/10 职场文书
40岁生日感言
2014/02/15 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年评职称工作总结
2014/11/20 职场文书
爱护环境建议书
2015/09/14 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
Python必备技巧之字符数据操作详解
2022/03/23 Python
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL