spring boot生成一个解密字符串的函数handle token
时间: 2023-12-07 11:03:50 浏览: 79
php 实现一个字符串加密解密的函数实例代码
你可以使用Java的JJWT库来生成和解密JWT(JSON Web Token)字符串,JWT是一种轻量级的身份验证和授权机制。
下面是一个生成和解密JWT字符串的示例代码:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import java.security.Key;
import java.time.Instant;
import java.util.Date;
public class JwtUtils {
private static final String SECRET_KEY = "your-secret-key"; // 这里应该使用加密强度更高的密钥
public static String generateToken(String subject) {
Key key = Keys.hmacShaKeyFor(SECRET_KEY.getBytes());
return Jwts.builder()
.setSubject(subject)
.setIssuedAt(Date.from(Instant.now()))
.setExpiration(Date.from(Instant.now().plusSeconds(3600))) // 过期时间为1小时
.signWith(key, SignatureAlgorithm.HS256)
.compact();
}
public static String parseToken(String token) {
Key key = Keys.hmacShaKeyFor(SECRET_KEY.getBytes());
Jws<Claims> claimsJws = Jwts.parserBuilder()
.setSigningKey(key)
.build()
.parseClaimsJws(token);
return claimsJws.getBody().getSubject();
}
}
```
使用`generateToken`方法生成一个JWT字符串,使用`parseToken`方法解密JWT字符串并获取其中的主题(subject)。注意,这里的SECRET_KEY应该使用加密强度更高的密钥,并且不应该在代码中明文存储,而是应该存储在安全的地方,如配置文件或环境变量中。
阅读全文