jwt和哈希使用

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"       => "[email protected]",
            # 非必须。not before。如果当前时间在nbf里的时间之前,则Token不被接受;一般都会留一些余地,比如几分钟。
            "nbf"       => 1357000000,
            # 非必须。JWT ID。针对当前token的唯一标识
            "jti"       => '222we',
            # 自定义字段
            "GivenName" => "Jonny",
            # 自定义字段
            "name"   => "Rocket",
            # 自定义字段
            "Email"     => "[email protected]",
         
        ];

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和哈希使用)