最近在使用JwtUtil的过程中发现一个怪现象:
JWT_KEY的长度不能是9个字母;如果设置成9个字母就会在生成token的预后报错:
Last unit does not have enough valid bits
多于或者少于9个字母都行。
哪位大侠知道原因?
目前发现的原因是:
public static SecretKey generalKey() {
byte[] encodedKey = Base64.getDecoder().decode(JwtUtil.JWT_KEY);
SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
return key;
}
创建token的时候有一个解码过程,所以字符串长度不对肯定会出错。所以增加一个编码过程就好。
解决方案:
static String authorInfo = "Chuyun527";
static String base64Info = Base64.getEncoder().encodeToString(authorInfo.getBytes());
public static final String JWT_KEY = base64Info;
不过,不知道这样做会不会影响加密?
博客讨论了在使用JwtUtil生成JWT时遇到的问题,即JWT_KEY长度为9个字母时会导致错误`Lastunitdoesnothaveenoughvalidbits`。问题源于Base64解码过程中字符串长度不匹配。解决方案是确保JWT_KEY为Base64编码后的字符串,以避免解码错误。这样做可能影响加密的安全性。
2万+

被折叠的 条评论
为什么被折叠?



