php 不用composer 库简单解码校验jwt

主要用到内置函数

hash_hmac()  base64_decode()  json_decode()

用base64_decode 改做成base64url_encode 就可以了

function base64url_encode($data) {

  $remainder=strlen($data) %4;
    if($remainder){
        $addlen=4-$remainder;
        $data.=str_repeat('=', $addlen);
    }
    return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}

先取jwt最后的sign部分留着待会验证 

$index= strrpos($token, '.');

$message= substr($token,0, $index);

$signature1=substr($token,$index+1);

$key="字符串密钥xxx";

然后生成sign看看是否相同,默认是sha256算法

$signature =hash_hmac('sha256', $message,($key),true );

$signature = base64url_encode($signature);

判断($signature1==$signature) 就可完成校验

解码信息则是取jwt 两个点.中间部分直接 json_decode(base64_decode($str)) 就可以了

参考

php 后端实现JWT认证方法_php如何实现jwt令牌中继以传递认证信息-CSDN博客

PHP实现JWT_php生成jwt-CSDN博客

Web 安全 - 同事告诉我 JWT 是明文的...-51CTO.COM

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值