最近在使用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;
不过,不知道这样做会不会影响加密?