String length must be a multiple of four.
今天在整理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
上一篇: java信任所有证书
下一篇: Java实现AES的加密和解密
推荐阅读
-
String length must be a multiple of four.
-
Des加密解密算法报错:Input length must be multiple of 8 when decrypting with padded cipher
-
AES加密/解密报错,Input length must be multiple of 16 when decrypting with padded cipher
-
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with pad
-
Input length must be multiple of 8 when decrypting with padded cipher 错误
-
Input strings must be a multiple of 16 in length python 爬取时 AES 解码错误
-
java.lang.IllegalArgumentException: String length must be a multiple of four.
-
java对称加密报错:Input length must be multiple of 8 when decrypting with padded cipher
-
String length must be a multiple of four.
-
java AES 加密,报javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decryp