热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解析jwt=php,JWTPHP解析

JWT-PHP(jsonwebtoken-PHP版)解析***解密*param$jwt*param$key*returnbool|mixed*publicstaticfunctio

JWT-PHP(json web token-PHP版)解析

/**

* 解密

* @param $jwt

* @param $key

* @return bool|mixed

*/

public static function decode ($jwt, $key='') {

$tokens = explode('.', $jwt);

if (count($tokens) != 3)    return false;

list($header64, $payload64, $sign) = $tokens;

$header = json_decode(urlsafeB64Decode($header64), JSON_OBJECT_AS_ARRAY);

if (empty($header['alg']))    return false;

if (self::signature($header64 . '.' . $payload64, $key, $header['alg']) !== $sign)    return false;

$payload = json_decode(self::urlsafeB64Decode($payload64), JSON_OBJECT_AS_ARRAY);

$time = $_SERVER['REQUEST_TIME'];

if (isset($payload['iat']) && $payload['iat'] > $time)    return false;

if (isset($payload['exp']) && $payload['exp'] 

return $payload;

}

/**

* 加密

* @param array $payload

* @param $key

* @param string $alg

* @return string

*/

public static function encode (array $payload, $key, $alg = 'SHA256') {

$key = md5($key);

$jwt = self::urlsafeB64Encode(json_encode(['typ' => 'JWT', 'alg' => $alg])) . '.' . self::urlsafeB64Encode(json_encode($payload));

return $jwt . '.' . self::signature($jwt, $key, $alg);

}

/**

* 签名

* @param $input

* @param $key

* @param $alg

* @return string

*/

public static function signature ($input, $key, $alg) {

return hash_hmac($alg, $input, $key);

}

详情可参考官网

bface056c9e3f2c21b4c184478c951ee.gif



推荐阅读
  • 在实际开发中,现在安卓端和后台之间的数据交互,一般都是用JSON来传递数据信息。JSON大家一般都比较熟悉。我这边就以实际项目中的后台传过来的情况和大家分析下及如何处理。比如后台返 ... [详细]
  • PHP GuzzleHttp 无法获取到返回结果 ... [详细]
  • 找出字符串中重复字符
    2019独角兽企业重金招聘Python工程师标准packagejavaBasic;importjava.util.HashMap;importjava.util.Map; ... [详细]
  • Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法了。这一新特性对以往的操作方法使用没有任何影响,你也可以用 ... [详细]
  • C#按值复制数组我有一个类型化的数组MyType[]types;我想制作这个数组的独立副本。我试过这个MyType[]types2newMyType[types.Length];t ... [详细]
  • 最近学习了数据挖掘常用的两种算法:FP-Growth和K-Means。现在把我的学习结果分享给大家。以下是本文的目录,大家可以根据需要跳过一些章节:1.FP-Grow ... [详细]
  • 本文是《开发你的WordPress主题框架》专题的第10篇,共10篇:为你的WordPress主题框架添加动作挂钩WordPress主题框架是如何工作的决定如何开发你的WordPress主题框架为你的WordPress主题框架建立起始文件为你的Wo ... [详细]
  • post请求,携带json对象参数模拟获取tokenpublicstaticStringgetToken()throwsIOException{创建连接CloseableHttp ... [详细]
  • 结对编程 地铁最短路径 张波朱新远
    结对编程地铁最短路径一、任务:实现一个帮助进行地铁出行路线规划的命令行程序。PSP2.1PersonalSoftwareProcessStagesTimePlanni ... [详细]
  • 1、对于List而言,要不然就使用迭代器,要不然就从后往前删除,从前往后删除会出现角标越界。因为我List有两个remove方法,一个是int作为形参(删除指定位置的元素),一个是 ... [详细]
  • 在开发四国军棋的游戏中,通过flex联机游戏开发-四国军棋游戏(五)-提炼棋类开发api,我们提炼出了第一个关于棋类游戏开发的api-FlexChessAPI,这个a ... [详细]
  • JavaBean和Map 转换 用反射方法实现
    由于JavaBean(实体类)结构与Map类似,我们可以把JavaBean与Map进行转换 ... [详细]
  • java中如何对汉字进行排序?
    前言:上一篇文章我们讲解了java中实现Comparator进行排序和实现Comparable进行排序,我们分别举例根据学号和姓名降序排序, ... [详细]
  • IDEA实用插件Lombok
    LombokLombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。通常,我们所定义的对象和b ... [详细]
  • 使用RSACryptoServiceProvider进行公钥加密我已经在CodeProject上发表了一篇文章,解释了如何使用RSA提供程序进行加密和解密:RSA私钥加密虽然200 ... [详细]
author-avatar
手机用户2702932800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有