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来实现网络服务
Sep 15 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
基于php 随机数的深入理解
Jun 05 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
学习php分页代码实例
Oct 24 PHP
理解php依赖注入和控制反转
May 11 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
yii使用bootstrap分页样式的实例
Jan 17 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学习之数组值的操作
2011/04/17 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
javascript 获取元素样式必杀技
2014/05/04 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
google广告之另类js调用实现代码
2020/08/22 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
Python实现随机选择元素功能
2017/09/14 Python
Python subprocess模块常见用法分析
2018/06/12 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
django实现模型字段动态choice的操作
2020/04/01 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
开业庆典答谢词
2014/01/18 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
学习保证书怎么写
2015/02/26 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python