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 分页类(模仿google)-面试题目解答
Sep 13 PHP
PHP编程过程中需要了解的this,self,parent的区别
Dec 30 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
有关php运算符的知识大全
Nov 03 PHP
php打造属于自己的MVC框架
Mar 07 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
YII2 实现多语言配置的方法分享
Jan 11 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
May 02 PHP
PHP 传输会话curl函数的实例详解
Sep 12 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 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防注入安全代码
2008/04/09 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
yii中widget的用法
2014/12/03 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
简单谈谈json跨域
2016/03/13 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
python多线程抓取天涯帖子内容示例
2014/04/03 Python
python查询mysql,返回json的实例
2018/03/26 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
python判断完全平方数的方法
2018/11/13 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
制衣厂各岗位职责
2013/12/02 职场文书
白酒市场开发计划书
2014/01/09 职场文书
农民致富事迹材料
2014/01/23 职场文书
公司运动会策划方案
2014/05/25 职场文书
宣传活动总结范文
2014/07/01 职场文书
应聘护士求职信
2014/07/21 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2014年党的群众路线活动个人整改措施
2014/10/28 职场文书
创先争优活动个人总结
2015/03/04 职场文书