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 相关文章推荐
FirePHP 推荐一款PHP调试工具
Apr 23 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
在Yii框架中使用PHP模板引擎Twig的例子
Jun 13 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
php文件夹的创建与删除方法
Jan 24 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
Jul 07 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
php实现微信发红包功能
Jul 13 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
php中关于换行的实例写法
Sep 26 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
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
php多维数组去掉重复值示例分享
2014/03/02 PHP
Yii实现多按钮保存与提交的方法
2014/12/03 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
关于this和self的使用说明
2010/08/01 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
vue路由--网站导航功能详解
2019/03/29 Javascript
vue.js实现左边导航切换右边内容
2019/10/21 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
python实现视频读取和转化图片
2019/12/10 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Python类的动态绑定实现原理
2020/03/21 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
天巡全球:Skyscanner Global
2017/06/20 全球购物
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
考试违纪检讨书
2014/02/02 职场文书
法学函授自我鉴定
2014/02/06 职场文书
财产公证书样本
2014/04/04 职场文书
导游词之襄阳古城
2019/09/27 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android
HTML常用标签超详细整理
2022/03/19 HTML / CSS
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers
全网非常详细的pytest配置文件
2022/07/15 Python