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的String类代码
Apr 20 PHP
php数据库连接时容易出错的特殊符号问题
Sep 01 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 PHP
mac环境中使用brew安装php5.5.15
Aug 18 PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 PHP
php生成年月日下载列表的方法
Apr 24 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
DEDECMS首页调用图片集里的多张图片
Jun 05 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 PHP
Codeigniter里的无刷新上传的实现代码
Apr 14 PHP
Smarty模板变量与调节器实例详解
Jul 20 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格式文件输出的方法
2015/03/14 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
深入理解JavaScript定时机制
2010/10/29 Javascript
JavaScript flash复制库类 Zero Clipboard
2011/01/17 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
JS常用加密编码与算法实例总结
2016/12/22 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
python判断变量是否为列表的方法
2020/09/17 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
英国高街品牌:Miss Selfridge(塞尔弗里奇小姐)
2016/09/21 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
不开辟用于交换数据的临时空间,如何完成字符串的逆序
2012/12/02 面试题
潘婷洗发水广告词
2014/03/14 职场文书
电子专业自荐信
2014/07/01 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书