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 相关文章推荐
mysql总结之explain
Feb 27 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
Mar 07 PHP
php实现模拟登陆方正教务系统抓取课表
May 19 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
php查询whois信息的方法
Jun 08 PHP
Apache连接PHP后无法启动问题解决思路
Jun 18 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 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语法(4)
2006/10/09 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
JS使用单链表统计英语单词出现次数
2016/06/16 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
一张图带我们入门Python基础教程
2017/02/05 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
50道外企软件测试面试题
2014/08/18 面试题
毕业生幼师求职自荐信
2013/10/01 职场文书
工程造价管理专业大专生求职信
2013/10/06 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
大学专科自荐信
2014/06/17 职场文书
redis实现排行榜功能
2021/05/24 Redis