PHP实现JWK

<?php
//JWT  JSON Web Token
//Head 头部部分
$header = array();
$header["alg"] = "HS256";
$header["typ"] = "JWT";
$headerJson = json_encode($header);
$headerEn = urlsafe_b64encode($headerJson);

//Payload 负载
$payload = array();
$payload["issuer"] = "issuer";//签发人
$payload["exp"] = "expiration time";//过期时间
$payload["sub"] = "subject";//主题
$payload["aud"] = "audience";//受众
$payload["nbf"] = "Not Before";//生效时间
$payload["iat"] = "Issued At";//签发时间
$payload["jti"] = "JWT ID";//编号
$payloadJson = json_encode($payload);
$payloadEn = urlsafe_b64encode($payloadJson);

//Signature(签名)
/**
 * @desc  Signature 部分是对前两部分的签名,防止数据篡改
 */
$string = $headerEn . "." . $payloadEn;
//secret--加密秘钥,只能服务端知道
$secret = "11";
$signature = hash_hmac("sha256", $string, $secret);


//算出签名以后,把 Header、Payload、Signature 三个部分拼成一个字符串,每个部分之间用"点"(.)分隔,就可以返回给前端
$result = $headerEn . "." . $payloadEn . "." . $signature;
var_dump($result);


//URL 安全编码
function urlsafe_b64encode($string)
{
    $data = base64_encode($string);
    $data = str_replace(array('+', '/', '='), array('-', '_', ''), $data);
    return $data;
}

//URL 安全解码
function urlsafe_b64dncode($string)
{
    $data = str_replace(array('+', '/', '='), array('-', '_', ''), $string);
    $mod4 = strlen($data) % 4;
    if ($mod4) {
        $data .= substr('====', $mod4);//补齐字符串
    }
    $data = base64_decode($data);
    return $data;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值