hutool如果验证jwt签名
时间: 2023-07-05 21:27:44 浏览: 176
签发JWT,验证JWT,解析JWT字符串
可以使用Hutool的JWT工具类来验证JWT签名。具体步骤如下:
1. 获取JWT中的头部和负载信息;
2. 根据头部信息获取签名算法;
3. 使用Hutool的DigestUtil进行签名验证。
示例代码如下:
```java
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;
import cn.hutool.jwt.JWT;
public class JwtUtil {
public static boolean verify(String jwtToken, String secret) {
String[] jwtArray = StrUtil.split(jwtToken, ".");
if (jwtArray.length != 3) {
return false;
}
String header = jwtArray[0];
String payload = jwtArray[1];
String sign = jwtArray[2];
String headerJson = Base64.decodeStr(header);
JWT jwt = new JWT(headerJson, payload);
String algorithm = jwt.getAlgorithm().getName();
String signContent = StrUtil.format("{}.{}", header, payload);
String verifySign = "";
if ("HS256".equals(algorithm)) {
verifySign = DigestUtil.hmacSha256Hex(signContent, secret);
} else if ("HS384".equals(algorithm)) {
verifySign = DigestUtil.hmacSha384Hex(signContent, secret);
} else if ("HS512".equals(algorithm)) {
verifySign = DigestUtil.hmacSha512Hex(signContent, secret);
} else {
return false;
}
return verifySign.equals(sign);
}
}
```
其中,jwtToken为JWT字符串,secret为JWT签名的密钥。调用该方法即可验证JWT签名是否正确。
阅读全文