java token生成和验证代码
时间: 2023-08-30 09:10:16 浏览: 129
JWT 生成Token实战验证.pdf
Java Token 生成和验证代码可以通过使用第三方库如JWT(JSON Web Token)来实现。JWT是一种开放标准,它定义了一种紧凑的,自包含的方式,用于在各个系统之间安全地传递信息(Claim)。JWT可以使用HMAC算法或RSA算法进行签名,进一步保证其安全性。
下面是一个示例代码,用于生成JWT Token并验证其有效性:
```
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
public class JwtUtil {
// Token秘钥,需要保密,不能泄露
private static final String SECRET_KEY = "my_secret_key";
// Token有效期,默认30分钟
private static final long EXPIRATION_TIME = 30 * 60 * 1000;
// 生成Token
public static String generateToken(String subject) {
// 生成签名密钥
Key signingKey = new SecretKeySpec(SECRET_KEY.getBytes(), SignatureAlgorithm.HS256.getJcaName());
// 设置Token有效期
long nowMillis = System.currentTimeMillis();
long expMillis = nowMillis + EXPIRATION_TIME;
// 创建JWT Token
String token = Jwts.builder()
.setSubject(subject)
.setExpiration(new Date(expMillis))
.signWith(signingKey)
.compact();
return token;
}
// 验证Token
public static boolean validateToken(String token) {
try {
// 获取签名密钥
Key signingKey = new SecretKeySpec(SECRET_KEY.getBytes(), SignatureAlgorithm.HS256.getJcaName());
// 解析JWT Token
Claims claims = Jwts.parser()
.setSigningKey(signingKey)
.parseClaimsJws(token)
.getBody();
return true;
} catch (Exception e) {
return false;
}
}
}
```
请注意,在生产环境中,需要使用不同的密钥和有效期来保证JWT的安全性。同时,JWT Token也应该在HTTPS协议下使用,以减少Token被窃取的风险。
阅读全文