欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

String length must be a multiple of four.

程序员文章站 2022-07-10 15:23:50
...


今天在整理2013年的工作时的一个项目,修改了数据库连接,初始化数据库,部署运行报错,主要原因是阿里巴巴druid报错,导致DataSource初始化失败。

druid报错日志:

Caused by: java.lang.IllegalArgumentException: String length must be a multiple of four.
at com.alibaba.druid.util.Base64.base64ToByteArray(Base64.java:122)
at com.alibaba.druid.util.Base64.base64ToByteArray(Base64.java:107)
at com.alibaba.druid.filter.config.ConfigTools.decrypt(ConfigTools.java:150)
at com.alibaba.druid.filter.config.ConfigFilter.decrypt(ConfigFilter.java:197)
... 79 more


我想到可能的原因是:

1、jdk版本问题。

2、tomcat版本问题。

3、MySQL版本太新,导致mysql驱动和druid需要升级。

4、记录数据库连接信息的.properties文件编码问题。


然后,我对可能的问题进行一一尝试。发现问题未解决。

最后,我去仔细看了下spring配置文件里有关druid的配置。心中一万个*。

<!-- 解密密码必须要配置的项 -->
		<property name="filters" value="config" />
		<property name="connectionProperties" value="config.decrypt=true" />

居然使用了druid的加解密功能。数据库连接密码是通过druid加密的,然后druid解密再访问数据库。怪不得报得错误是有关字符加解密编码的错误。

当时修改数据库配置信息的时候,心里想把密码搞得那么复杂干嘛?当时就没想到这是druid的加密


https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98