美文网首页
jwt和哈希使用

jwt和哈希使用

作者: DragonRat | 来源:发表于2018-07-09 13:33 被阅读0次

    jwt

    JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息
    JWT就是一个字符串,经过加密处理与校验处理的字符串,由三个部分组成( header.payload.signature),是基于token的身份验证可以替代传统的cookie+session身份验证方法;

    header部分组成(计算规则)

    {
    "typ":"JWT",
    "alg":"HS256"
    }
    

    payload 部分组成(计算的相关数据)

     $token   = [
                #非必须。issuer 请求实体,可以是发起请求的用户的信息,也可是jwt的签发者。
                "iss"       => "http://example.org",
                #非必须。issued at。 token创建时间,unix时间戳格式
                "iat"       => $_SERVER['REQUEST_TIME'],
                #非必须。expire 指定token的生命周期。unix时间戳格式
                "exp"       => $_SERVER['REQUEST_TIME'] + 7200,
                #非必须。接收该JWT的一方。
                "aud"       => "http://example.com",
                #非必须。该JWT所面向的用户
                "sub"       => "jrocket@example.com",
                # 非必须。not before。如果当前时间在nbf里的时间之前,则Token不被接受;一般都会留一些余地,比如几分钟。
                "nbf"       => 1357000000,
                # 非必须。JWT ID。针对当前token的唯一标识
                "jti"       => '222we',
                # 自定义字段
                "GivenName" => "Jonny",
                # 自定义字段
                "name"   => "Rocket",
                # 自定义字段
                "Email"     => "jrocket@example.com",
             
            ];
    

    signature组成部分(签名)

    //双方自定义用于加解密
    HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      secret)
    

    例子

      $id = $row[0]->id;
            $array = array(
                'id' => $id, //该JWT的签发者,用于后面的解密操作
                'iat' => time(), //创建时间
                'exp' => time() + 60, //什么时候过期
            );
    
            $key = 'v2ILfnbsxgULEWBdAACa';
    
            $data = JWT::encode($array, $key);
    
            解码: $decoded = JWT::decode($data, $key, array('HS256'));
    
    

    哈希

    password_hash加密
    password_verify解密
    例子:

    
    $psword = password_hash($password, PASSWORD_DEFAULT);
    
    $a = password_verify($password, $psword);
    

    相关文章

      网友评论

          本文标题:jwt和哈希使用

          本文链接:https://www.haomeiwen.com/subject/ghgzuftx.html