PHP实现超简单的SSL加密解密、验证及签名的方法示例

 更新时间:2017年08月28日 09:55:46   作者:zwcwu31  
这篇文章主要介绍了PHP实现超简单的SSL加密解密、验证及签名的方法,结合实例形式分析了php基于openssl相关函数的签名、加密、解密、验证等操作技巧,需要的朋友可以参考下

本文实例讲述了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;
}

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

文字在线加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password

在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《php正则表达式用法总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP中实现中文字符进制转换原理分析

    PHP中实现中文字符进制转换原理分析

    中文字符编码研究系列第四期,PHP实现中文字符进制转换原理分析,主要讨论中文汉字转换为十进制和十六进制的方法,并掌握转换原理应用于实际开发。本文以GBK编码字符为例,讨论GBK编码的字符转换原理
    2011-12-12
  • 使用systemd设置PHP程序为服务的配置步骤

    使用systemd设置PHP程序为服务的配置步骤

    在现代 Linux 系统中,systemd 是用于管理和控制服务的标准工具,通过 systemd,我们可以轻松地将 PHP 程序配置为后台运行的系统服务,本文将介绍如何为 PHP 程序设置 systemd 服务单元,并涵盖相关配置步骤,需要的朋友可以参考下
    2024-10-10
  • jquery+php实现导出datatables插件数据到excel的方法

    jquery+php实现导出datatables插件数据到excel的方法

    这篇文章主要介绍了jquery+php实现导出datatables插件数据到excel的方法,实例分析了jquery插件datatables的使用方法与php导出datatables数据到Excel的技巧,需要的朋友可以参考下
    2015-07-07
  • WordPress中

    WordPress中"无法将上传的文件移动至"错误的解决方法

    这篇文章主要介绍了WordPress中"无法将上传的文件移动至"错误的解决方法,文中的环境基于Linux系统和Nginx服务器,需要的朋友可以参考下
    2015-07-07
  • 浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别

    浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别

    小编小编就为大家带来一篇浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • ThinkPHP 404页面的设置方法

    ThinkPHP 404页面的设置方法

    这篇文章主要介绍了ThinkPHP 404页面的设置方法,需要的朋友可以参考下
    2015-01-01
  • php+mysql结合Ajax实现点赞功能完整实例

    php+mysql结合Ajax实现点赞功能完整实例

    这篇文章主要介绍了php+mysql结合Ajax实现点赞功能,以一个完整实例形式详细分析了实现点赞功能中涉及的html页面、Ajax功能及php方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01
  • php设计模式 Decorator(装饰模式)

    php设计模式 Decorator(装饰模式)

    动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活
    2011-06-06
  • PHP5.5迭代生成器用法实例详解

    PHP5.5迭代生成器用法实例详解

    这篇文章主要介绍了PHP5.5迭代生成器用法,结合实例形式详细分析了PHP5.5迭代生成器的功能,定义及相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • php在线解压ZIP文件的方法

    php在线解压ZIP文件的方法

    这篇文章主要介绍了php在线解压ZIP文件的方法,包含了较为完整的上传与zip解压功能,非常具有实用价值,需要的朋友可以参考下
    2014-12-12

最新评论