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 程序员应该使用的10个组件
Oct 31 PHP
ecshop 批量上传(加入自定义属性)
Mar 20 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
php学习笔记之面向对象
Nov 08 PHP
php实现只保留mysql中最新1000条记录
Jun 18 PHP
php根据生日计算年龄的方法
Jul 13 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
php 数据结构之链表队列
Oct 17 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 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
php md5下16位和32位的实现代码
2008/04/09 PHP
php MYSQL 数据备份类
2009/06/19 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
php自定义分页类完整实例
2015/12/25 PHP
php实现的二分查找算法示例
2017/06/20 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
mouse_on_title.js
2006/08/25 Javascript
Javascript中的Split使用方法与技巧
2007/03/09 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
移动端界面的适配
2017/01/11 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
js实现简单页面全屏
2019/09/17 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
电大会计学自我鉴定
2014/02/06 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
2014年教研组工作总结
2014/11/26 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python