java.lang.IllegalArgumentException: Last unit does not have enough valid bits 异常的解决

📑前言

本文主要jwt出现的异常问题,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是青衿🥇
☁️博客首页:CSDN主页放风讲故事
🌄每日一句:努力一点,优秀一点

使用封装好的 JwtUtil 的工具类时,自定义设置秘钥明文,启动后报错:

public class JwtUtil {

	//有效期为
	public static final Long JWT_TTL = 72*60 * 60 *1000L;// 60 * 60 *1000  一个小时
	//设置秘钥明文
	public static final String JWT_KEY = "qingzhiqc";

	public static String getUUID(){
		String token = UUID.randomUUID().toString().replaceAll("-", "");
		return token;
	}

	/**
	 * 生成jtw
	 * @param subject token中要存放的数据(json格式)
	 * @return
	 */
	public static String createJWT(String subject) {
		JwtBuilder builder = getJwtBuilder(subject, null, getUUID());// 设置过期时间
		return builder.compact();
	}

报错信息:

java.lang.IllegalArgumentException: Last unit does not have enough valid bits
	at java.util.Base64$Decoder.decode0(Base64.java:734) ~[na:1.8.0_281]
	at java.util.Base64$Decoder.decode(Base64.java:526) ~[na:1.8.0_281]
	at java.util.Base64$Decoder.decode(Base64.java:549) ~[na:1.8.0_281]
	at com.qingzhi.utils.JwtUtil.generalKey(JwtUtil.java:91) ~[classes/:na]
	at com.qingzhi.utils.JwtUtil.getJwtBuilder(JwtUtil.java:51) ~[classes/:na]
	at com.qingzhi.utils.JwtUtil.createJWT(JwtUtil.java:34) ~[classes/:na]
	at com.qingzhi.service.impl.BlogLoginServiceImpl.login(BlogLoginServiceImpl.java:53) ~[classes/:na]
	at com.qingzhi.controller.BlogLoginController.login(BlogLoginController.java:34) ~[classes/:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_281]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_281]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_281]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_281]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.7.jar:5.3.7]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.7.jar:5.3.7]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.7.jar:5.3.7]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.7.jar:5.3.7]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.7.jar:5.3.7]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.7.jar:5.3.7]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1063) ~[spring-webmvc-5.3.7.jar:5.3.7]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.7.jar:5.3.7]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.3.7.jar:5.3.7]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) [spring-webmvc-5.3.7.jar:5.3.7]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) [tomcat-embed-core-9.0.46.jar:4.0.FR]
`

报错信息整整齐齐,如图所示,在进行base64加密和解密的过程中会出现这个问题,报错网上找了一些文章,根本原因为:编码后的字符串长度不符合要求(要求长度是4的倍数)

所以,这里我设置的秘钥明文有问题,最初设置的为 qingzhiqc ,我将 qingzhiqc 改为 qingzhi,再次执行正常生成 jwt

"eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1ZWRlNzcyNWE3ZTQ0ODAzYTU3YjM1MzNmNjdjMzYxMCIsInN1YiI6IjEiLCJpc3MiOiJIRiIsImlhdCI6MTcwMDA0MTUxMywiZXhwIjoxNzAwMzAwNzEzfQ.cICUhn1KU7Ghego92x2h1vv8IOyfWb5zZA0IhdcxGWU"

📑文章末尾

在这里插入图片描述

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值