java-jwt
依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.19.1</version>
</dependency>
加密
private static final String KEY = "Abc";
private static final long EXPIRE_TIME = 5 * 60 * 1000;
@Test
public void encrypt() {
UserPO po = new UserPO();
po.setId("1");
po.setName("张三");
po.setPassword("123");
String token = JWT.create()
.withHeader(new HashMap<>())
.withExpiresAt(new Date(System.currentTimeMillis() + EXPIRE_TIME))
.withClaim("id", po.getId())
.withClaim("name", po.getName())
.withClaim("pwd", po.getPassword())
.sign(Algorithm.HMAC256(KEY));
System.out.println(token);
}
解密
@Test
public void decrypt() {
String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi5byg5LiJIiwiaWQiOiIxIiwiZXhwIjoxNjUyMDAwMjc5LCJwd2QiOiIxMjMifQ.gVXChhj-8fScFxLtGqjBXY-K71kIYmPVB6g3TcHT7As";
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(KEY)).build();
DecodedJWT decodedJWT = jwtVerifier.verify(token);
decodedJWT.getExpiresAt();
String name = decodedJWT.getClaim("name").asString();
System.out.println(name);
}
jjwt
依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
加密
private static final String KEY = "Abc1234567";
private static final long EXPIRE_TIME = 5 * 60 * 1000;
@Test
public void encrypt() {
String token = Jwts.builder()
.setHeaderParam("typ", "JWT")
.setHeaderParam("alg", "HS256")
.setSubject("baobao-user")
.setIssuedAt(new Date(System.currentTimeMillis() + EXPIRE_TIME))
.setExpiration(new Date(System.currentTimeMillis() + EXPIRE_TIME))
.claim("id", "1")
.claim("nickname", "张三")
.signWith(SignatureAlgorithm.HS256, KEY)
.compact();
System.out.println(token);
}
解密
@Test
public void decrypt() {
String token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJiYW9iYW8tdXNlciIsImlhdCI6MTY1MjAwNDkyNCwiZXhwIjoxNjUyMDA0OTI0LCJpZCI6IjEiLCJuaWNrbmFtZSI6IuW8oOS4iSJ9.89fRjIUSWkMrZW2mTtxT3HXpSH5M1_liher4D18dRko";
JwtParser parser = Jwts.parser();
Jws<Claims> jws = parser.setSigningKey(KEY).parseClaimsJws(token);
Claims claims = jws.getBody();
Object id = claims.get("nickname");
System.out.println(id);
}