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实现ping
Oct 09 PHP
用PHP+MySql编写聊天室
Oct 09 PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
Jun 04 PHP
thinkphp使用literal防止模板标签被解析的方法
Nov 22 PHP
php连接odbc数据源并保存与查询数据的方法
Dec 24 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
Dec 24 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
php面试中关于面向对象的相关问题
Feb 13 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操作csv文件代码实例汇总
2014/09/22 PHP
php实现两个数组相加的方法
2015/02/17 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
yii2.0数据库迁移教程【多个数据库同时同步数据】
2016/10/08 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
php源码的使用方法讲解
2019/09/26 PHP
JS解析XML的实现代码
2009/11/12 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
2014/01/26 Javascript
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
python命令行参数sys.argv使用示例
2014/01/28 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
Flask-Mail用法实例分析
2018/07/21 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
python 实现音频叠加的示例
2020/10/29 Python
Django websocket原理及功能实现代码
2020/11/14 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
eBay德国站:eBay.de
2017/09/14 全球购物
团拜会策划方案
2014/06/07 职场文书
你知道Java Spring的两种事务吗
2022/03/16 Java/Android