概念
alg为使用的加密算法
该部分储存主要信息
第三部分为签名 知道就好。
入门使用
导入依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
实现加密
private long time=1000*60*60*24;
private String signature="admin";
@Test
public void jwt(){
JwtBuilder jwtBuilder= Jwts.builder();
String jwtToken=jwtBuilder
//header
.setHeaderParam("typ","JWT")
.setHeaderParam("alg","HS256")
//payload
.claim("username","tom")
//设置主题
.setSubject("admin-test")
//设置有效时间 到达该时间时token失去效果
.setExpiration(new Date(System.currentTimeMillis()+time))
//设置ID
.setId(UUID.randomUUID().toString())
//签名 signature
.signWith(SignatureAlgorithm.HS256,signature)
//调用拼接方法 拼接三个部分
.compact();
System.out.println(jwtToken);
}
结果生成了一大堆字母说明成功了!
实现解密
@Test
public void parse(){
//对应你上面的结果
String toke="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InRvbSIsInN1YiI6ImFkbWluLXRlc3QiLCJleHAiOjE2Mjk3OTYxNjEsImp0aSI6Ijk0ZGU2OWU3LTY4OTgtNDBiNC1iMjRlLWI2NWU1MjJlMDZmMiJ9.CYWJxDzZM9ivW2tDxTwHEvQkw2y9hSx8N7SwEV5Ny48";
JwtParser jwtParser=Jwts.parser();
//进行解密
Jws<Claims> claimsJws = jwtParser.setSigningKey(signature).parseClaimsJws(toke);
//获取主体内容 主体内容包含封装的数据
Claims body = claimsJws.getBody();
//获得各种信息。
System.out.println(body.get("username"));
System.out.println(body.getId());
System.out.println(body.getSubject());
}
结果 成功解出信息