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 中dirname(_file_)讲解
Mar 18 PHP
用PHP实现的随机广告显示代码
Jun 14 PHP
php通过COM类调用组件的实现代码
Jan 11 PHP
初品cakephp 入门基础
Feb 16 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
ThinkPHP模型详解
Jul 27 PHP
PHP json_encode() 函数详解及中文乱码问题
Nov 05 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
实例化php类时传参的方法分析
Jun 05 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
jquery插件开发注意事项小结
2013/06/04 Javascript
jQuery实现列表自动循环滚动鼠标悬停时停止滚动
2013/09/06 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python enumerate函数的使用方法总结
2017/11/15 Python
Python内建模块struct实例详解
2018/02/02 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
python微信公众号开发简单流程
2018/03/23 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
Python3数字求和的实例
2019/02/19 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
成考报名单位证明范本
2014/01/16 职场文书
应届生求职自荐信
2014/07/04 职场文书
标准单位租车协议书
2014/09/23 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
golang日志包logger的用法详解
2021/05/05 Golang