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 相关文章推荐
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
php做下载文件的实现代码及文件名中乱码解决方法
Feb 03 PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 PHP
php不写闭合标签的好处
Mar 04 PHP
PHP四大安全策略
Mar 12 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
php组合排序简单实现方法
Oct 15 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
Oct 23 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 PHP
Laravel框架源码解析之反射的使用详解
May 14 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 #PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 #PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 #PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 #PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 #PHP
PHP实现的简单sha1加密功能示例
Aug 27 #PHP
You might like
建立文件交换功能的脚本(二)
2006/10/09 PHP
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP实现小偷程序实例
2016/10/31 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
Prototype框架详解
2015/11/25 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
python 编写简单网页服务器的实例
2018/06/01 Python
python 循环数据赋值实例
2019/12/02 Python
Python模块future用法原理详解
2020/01/20 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
Python运算符+与+=的方法实例
2021/02/18 Python
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
2020/06/04 HTML / CSS
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
献爱心活动总结
2014/05/07 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
毕业论文致谢词
2015/05/14 职场文书
初二英语教学反思
2016/02/15 职场文书
MySQL 聚合函数排序
2021/07/16 MySQL