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 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
php验证是否是md5编码的简单代码
Apr 01 PHP
php操作MongoDB类实例
Jun 17 PHP
php给图片加文字水印
Jul 31 PHP
关于php中的json_encode()和json_decode()函数的一些说明
Nov 20 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 PHP
PHP实现随机发扑克牌
Apr 22 PHP
微信小程序和php的登录实现
Apr 01 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
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
Jquery实现弹性滑块滑动选择数值插件
2015/08/08 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python中的exec、eval使用实例
2014/09/23 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
python实现日常记账本小程序
2018/03/10 Python
详解python 注释、变量、类型
2018/08/10 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
大学生个人推荐信范文
2013/11/25 职场文书
出生公证委托书
2014/04/03 职场文书
爱耳日活动总结
2014/04/30 职场文书
关于工作经历的证明书
2014/10/11 职场文书
公司开业主持词
2015/07/02 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
python 逐步回归算法
2021/04/06 Python
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
Python可视化学习之seaborn调色盘
2022/02/24 Python
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫