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个人网站架设连环讲(四)
Oct 09 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
php 静态变量与自定义常量的使用方法
Jan 26 PHP
PHP生成Flash动画的实现代码
Mar 12 PHP
php抓取https的内容的代码
Apr 06 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
Jun 23 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
Jun 25 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
Jun 05 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
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
php session_decode函数用法讲解
2019/05/26 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
将string解析为json的几种方式小结
2010/11/11 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
正则表达式,替换所有HTML标签的简单实例
2016/11/28 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
行政工作个人的自我评价
2014/02/13 职场文书
元宵节晚会主持人串词
2014/03/25 职场文书
综治工作汇报材料
2014/10/27 职场文书
让生命充满爱观后感
2015/06/08 职场文书
夏洛特的网观后感
2015/06/15 职场文书
观后感的写法
2015/06/19 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
详解Python flask的前后端交互
2022/03/31 Python
MSSQL基本语法操作
2022/04/11 SQL Server