深坑切记
由于最近形势不好,居家办公。同样的环境在公司就可以完美的跑起来,在家里的环境就不可以。百思不得其解,下午耗费2小时一个断点一个断点进行比对。功夫不负有心人,终于让我找到了。
场景复现
业务代码
@Test
public void tes2t() {
String ss = EncryptUtil.aesDecryptBase64("1dwZ6CdyBigDslXI5IoLLw==", "JMvDAF3YeuTI89aHIddSixmLr6ruWaBY");
System.out.println("ss = " + ss);
}
这段代码的主要意思就是把前端传过来的密码进行解密,在旧版本JDK(jdk1.8.0_121)
中跑会报如下错误。
cn.hutool.crypto.CryptoException: InvalidKeyException: Illegal key size or default parameters
at cn.hutool.crypto.symmetric.SymmetricCrypto.decrypt(SymmetricCrypto.java:306)
at cn.hutool.crypto.symmetric.SymmetricCrypto.decryptStrFromBase64(SymmetricCrypto.java:374)
at cn.hutool.crypto.symmetric.SymmetricCrypto.decryptStrFromBase64(SymmetricCrypto.java:395)
at com.ncst.base.core.encrypt.EncryptUtil.aesDecryptBase64(EncryptUtil.java:78)
源码调试
高版本的jdk(jdk1.8.0_33)
比低版本多了26个provider
,就因为这导致了上面遇到的问题。
反思
一定要紧跟潮流,用新技术,新代码包。