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的ob_start();控制您的浏览器cache!
Feb 14 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
解析PHP中的正则表达式以及模式匹配
Jun 19 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 PHP
php中in_array函数用法探究
Nov 25 PHP
php实现通用的信用卡验证类
Mar 24 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
php探针不显示内存解决方法
Sep 17 PHP
laravel添加前台跳转成功页面示例
Oct 22 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 strnatcmp()函数的用法总结
2013/11/27 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
php修改数组键名的方法示例
2017/04/15 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
PHP7 windows支持
2021/03/09 PHP
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
vue实现element表格里表头信息提示功能(推荐)
2019/11/20 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
python线程池threadpool使用篇
2018/04/27 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
开办化妆品公司创业计划书
2013/12/26 职场文书
《小小雨点》教学反思
2014/02/18 职场文书
给校长的建议书200字
2014/05/16 职场文书
四风对照检查剖析材料
2014/10/07 职场文书
2014年团支部工作总结
2014/11/17 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers