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+mysql留言本源码
Nov 11 PHP
PHP时间戳与日期之间转换的实例介绍
Apr 19 PHP
基于simple_html_dom的使用小结
Jul 01 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
Jul 19 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
php中通过DirectoryIterator删除整个目录的方法
Mar 13 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
浅析Yii2 GridView实现下拉搜索教程
Apr 22 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 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延迟静态绑定示例分享
2014/06/22 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
js获取变量
2006/08/24 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python监控键盘输入实例代码
2018/02/09 Python
浅谈django的render函数的参数问题
2018/10/16 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
电子信息毕业生自荐信
2013/11/16 职场文书
应届生如何写自荐信
2014/01/05 职场文书
《理想》教学反思
2014/02/17 职场文书
答谢会策划方案
2014/05/12 职场文书
领导干部作风建设自查报告
2014/10/23 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
道歉短信大全
2015/05/12 职场文书
辛德勒的名单观后感
2015/06/03 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python
Redis基本数据类型Set常用操作命令
2022/06/01 Redis
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技