使用别人封装好的 JwtUtil 的工具类时,自定义设置秘钥明文,启动后报错:
//有效期为
public static final Long JWT_TTL = 60 * 60 *1000L;// 60 * 60 *1000 一个小时
//设置秘钥明文
public static final String JWT_KEY = "mhqfl";
public static String getUUID(){
String token = UUID.randomUUID().toString().replaceAll("-", "");
return token;
}
报错信息:
Exception in thread "main" java.lang.IllegalArgumentException: Last unit does not have enough valid bits
at java.util.Base64$Decoder.decode0(Base64.java:734)
at java.util.Base64$Decoder.decode(Base64.java:526)
at java.util.Base64$Decoder.decode(Base64.java:549)
at org.example.util.JwtUtil.generalKey(JwtUtil.java:86)
at org.example.util.JwtUtil.getJwtBuilder(JwtUtil.java:52)
at org.example.util.JwtUtil.createJWT(JwtUtil.java:35)
at org.example.util.JwtUtil.main(JwtUtil.java:108)
报错信息整整齐齐,如图所示,在进行base64加密和解密的过程中会出现这个问题,报错网上找了一些文章,根本原因为:编码后的字符串长度不符合要求(要求长度是4的倍数)
所以,这里我设置的秘钥明文有问题,最初设置的为 mhqfl ,我将 mhqfl 改为 mhqfly,再次执行正常生成 jwt文章来源:https://uudwc.com/A/BveZv
eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ZTllMGMzOWU4MWI0MTQ4OGFmZmE1OWRkN2RhNzgyZSIsInN1YiI6IjEyMzQiLCJpc3MiOiJtaCIsImlhdCI6MTY2OTIwNzc4MSwiZXhwIjoxNjY5MjExMzgxfQ.zKeEfgrU4_qeOt1FQ_M4SqQGJvwbYybEGuucTcx1GwE
我又将 密钥明文改为 1-10 位的字符串,发现,1位和5位都不能正常执行,真坑!最后就用了6位。文章来源地址https://uudwc.com/A/BveZv