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中获取变量的变量名的一段代码的bug分析
Jul 07 PHP
基于xcache的配置与使用详解
Jun 18 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 PHP
php 使用 __call实现重载功能示例
Nov 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检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
javascript 对象的定义方法
2007/01/10 Javascript
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
一个简单的JavaScript数据缓存系统实现代码
2010/10/24 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Python切片工具pillow用法示例
2018/03/30 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
python实现3D地图可视化
2020/03/25 Python
Python如何使用27行代码绘制星星图
2020/07/20 Python
用python进行视频剪辑
2020/11/02 Python
python regex库实例用法总结
2021/01/03 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
《画风》教学反思
2014/04/16 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
先进党支部申报材料
2014/12/24 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
python实现简单区块链结构
2021/04/25 Python
Java基础-封装和继承
2021/07/02 Java/Android
DQL数据查询语句使用示例
2022/12/24 MySQL