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与XML联手进行网站编程代码实例
Jul 10 PHP
php 多线程上下文中安全写文件实现代码
Dec 28 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
19个超实用的PHP代码片段
Mar 14 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
php获取网页里所有图片并存入数组的方法
Apr 06 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
php 三大特点:封装,继承,多态
Feb 19 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
php+redis消息队列实现抢购功能
Feb 08 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模块 Memcached功能多于Memcache
2011/06/14 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
常见JS验证脚本汇总
2015/12/01 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
jQuery使用方法
2017/02/04 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
基于zepto.js实现登录界面
2017/10/09 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Anaconda入门使用总结
2018/04/05 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
解决Python3中的中文字符编码的问题
2018/07/18 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
python获取栅格点和面值的实现
2020/03/10 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
Oracle快照(snapshot)
2015/03/13 面试题
数字天堂软件测试面试题
2012/12/23 面试题
会计专业个人求职信范文
2014/01/08 职场文书
高中语文教学反思
2014/01/16 职场文书
教师师德承诺书
2014/03/26 职场文书
联片教研活动总结
2014/07/01 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
英语教学课后反思
2016/02/15 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
【js设计模式】SOLID五大设计原则
2022/03/24 Javascript
Mysql开启外网访问
2022/05/15 MySQL