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音乐采集(部分代码)
Feb 14 PHP
php checkbox 取值详细说明
Aug 19 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
关于PHP的curl开启问题探讨
Apr 08 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
PHP下载大文件失败并限制下载速度的实例代码
May 10 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 #PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 #PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 #PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 #PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 #PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 #PHP
You might like
PHP之短标签开启设置
2013/06/17 PHP
php图像处理类实例
2015/07/28 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
node.js中的fs.unlink方法使用说明
2014/12/15 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
全面解析Bootstrap中form、navbar的使用方法
2016/05/30 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
对python 命令的-u参数详解
2018/12/03 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
华为python面试题
2016/05/03 面试题
质量工程师岗位职责
2013/11/16 职场文书
聚美优品广告词改编
2014/03/14 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
常用的Python代码调试工具总结
2021/06/23 Python
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js