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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
PHP编实现程动态图像的创建代码
Sep 28 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
CodeIgniter安全相关设置汇总
Jul 03 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
php获取url参数方法总结
Nov 13 PHP
php中opendir函数用法实例
Nov 15 PHP
wamp服务器访问php非常缓慢的解决过程
Jul 01 PHP
PHP chunk_split()函数讲解
Feb 12 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php通过curl模拟登陆DZ论坛
2015/05/11 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
php输出图像的方法实例分析
2017/02/16 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
2018/10/14 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
JS中的事件委托实例浅析
2018/03/22 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
简单介绍Python中的floor()方法
2015/05/15 Python
Python fileinput模块使用实例
2015/06/03 Python
python处理按钮消息的实例详解
2017/07/11 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
python读取mysql数据绘制条形图
2020/03/25 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
解决selenium+Headless Chrome实现不弹出浏览器自动化登录的问题
2021/01/09 Python
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
EJB3推出JPA的原因
2013/10/16 面试题
2014年实习班主任工作总结
2014/11/08 职场文书
乒乓球比赛通知
2015/04/27 职场文书