hutool JWT 例子
所属分类 hutool
浏览量 107
JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。
头部(Header) :包含算法和令牌类型信息。
载荷(Payload) :包含用户数据和元数据。
签名(Signature) :基于头部和载荷计算得出,用于验证请求是否合法
签名计算
将编码后的头部和载荷用点(.)连接起来形成一个字符串。
使用指定的密钥对这个字符串进行签名,得到签名部分。
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
Map payload = new HashMap<>();
payload.put ("id", "1");
payload.put ("name", "tiger");
String key = "123456789";
byte[] keybytes = key.getBytes(StandardCharsets.UTF_8);
String str = JWTUtil.createToken(payload,keybytes);
System.out.println(str);
JWT jwt = JWTUtil.parseToken(str);
// {"typ":"JWT","alg":"HS256"}
System.out.println(jwt.getHeaders());
// {"name":"tiger","id":"1"}
System.out.println(jwt.getPayload());
// HS256 HMAC-SHA256算法
System.out.println(jwt.getAlgorithm());
// null
System.out.println(jwt.getSigner());
// true
System.out.println(JWTUtil.verify(str,keybytes));
// false
System.out.println(JWTUtil.verify(str+"a",keybytes));
常见的JWT签名算法
对称加密算法:
HS256 (HMAC SHA-256) :使用共享密钥进行HMACSHA256哈希运算。
HS384 (HMAC SHA-384) :使用共享密钥进行HMACSHA384哈希运算。
HS512 (HMAC SHA-512) :使用共享密钥进行HMACSHA512哈希运算。
非对称加密算法:
RS256 (SHA-256 with RSA) :使用公钥和私钥进行RSA加密和解密。
RS384 (SHA-384 with RSA) :使用公钥和私钥进行RSA加密和解密。
RS512 (SHA-512 with RSA) :使用公钥和私钥进行RSA加密和解密。
ES256 (SHA-256 with ECDSA) :使用椭圆曲线数字签名算法(ECDSA)生成公钥和私钥。
ES384 (SHA-384 with ECDSA) :使用椭圆曲线数字签名算法(ECDSA)生成公钥和私钥。
ES512 (SHA-512 with ECDSA) :使用椭圆曲线数字签名算法(ECDSA)生成公钥和私钥。
PS256 (SHA-256 with RSA PSS) :使用RSA PSS填充方式生成公钥和私钥。
sJWT(JSON Web Token
springboot中使用 JWT
上一篇
下一篇
国密算法
hutool 国密算法工具类 SmUtil
JWT(JSON Web Token)
springboot jpa 实例
Java各种数据对象转换框架
java8的日期时间