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 表单验证实现代码
Mar 10 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
PHP独立Session数据库存储操作类分享
Jun 11 PHP
php单文件版在线代码编辑器
Mar 12 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
Aug 27 PHP
PHP二维数组分页2种实现方法解析
Jul 09 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+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
js实现网页收藏功能
2015/12/17 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python与php实现分割文件代码
2017/03/06 Python
python实现图片处理和特征提取详解
2017/11/13 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python3 合并二叉树的实现
2019/09/30 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
汽车销售顾问求职自荐信
2014/01/01 职场文书
2014年招商工作总结
2014/11/22 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python