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 多线程上下文中安全写文件实现代码
Dec 28 PHP
php中static静态变量的使用方法详解
Jun 04 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
php跨站攻击实例分析
Oct 28 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP 根据key 给二维数组分组
Dec 09 PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
Sep 28 PHP
CI框架网页缓存简单用法分析
Dec 26 PHP
PDO::query讲解
Jan 29 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 危险函数解释 分析
2009/04/22 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
PHP扩展Swoole实现实时异步任务队列示例
2019/04/13 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
JavaScript Array Flatten 与递归使用介绍
2011/10/30 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
jQuery知识点整理
2015/01/30 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
Python yield与实现方法代码分析
2018/02/06 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
用python对excel查重
2020/12/07 Python
求职信范文大全
2014/05/26 职场文书
机械专业技术员求职信
2014/06/14 职场文书
小学优秀学生评语
2014/12/29 职场文书
预备党员群众意见
2015/06/01 职场文书
暑期家教宣传单
2015/07/14 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python