java.lang.IllegalArgumentException: Last unit does not have enough valid bits解决方案

使用别人封装好的 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

eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ZTllMGMzOWU4MWI0MTQ4OGFmZmE1OWRkN2RhNzgyZSIsInN1YiI6IjEyMzQiLCJpc3MiOiJtaCIsImlhdCI6MTY2OTIwNzc4MSwiZXhwIjoxNjY5MjExMzgxfQ.zKeEfgrU4_qeOt1FQ_M4SqQGJvwbYybEGuucTcx1GwE

我又将 密钥明文改为  1-10 位的字符串,发现,1位和5位都不能正常执行,真坑!最后就用了6位。

你可能感兴趣的:(spring,java,开发语言)