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实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
Laravel中使用阿里云OSS Composer包分享
Feb 10 PHP
百度地图API使用方法详解
Aug 25 PHP
又十个超级有用的PHP代码片段
Sep 24 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
Nov 04 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
Sep 23 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
thinkphp整合微信支付代码分享
Nov 24 PHP
laravel migrate初学常见错误的解决方法
Oct 11 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
Laravel中获取IP的真实地理位置
Apr 01 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 引用(&amp;)详解
2009/11/20 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
vue插件tab选项卡使用小结
2016/10/27 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python编写一个闹钟功能
2017/07/11 Python
对Python中list的倒序索引和切片实例讲解
2018/11/15 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
python实现中文文本分句的例子
2019/07/15 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
python元组的概念知识点
2019/11/19 Python
python实现PCA降维的示例详解
2020/02/24 Python
python给list排序的简单方法
2020/12/10 Python
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
大专生自荐信
2013/10/04 职场文书
工业学校毕业生自荐书
2014/01/03 职场文书
广播体操口号
2014/06/18 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
2015新教师教学工作总结
2015/07/22 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python