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位。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值