一、本人问题发现场景
再对接微信收付通的产品时需要对部分数据就行加密解密,发现会报以下错误Illegal key size
Exception in thread "main" java.security.InvalidKeyException: Illegal key size
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1039)
at javax.crypto.Cipher.implInit(Cipher.java:805)
at javax.crypto.Cipher.chooseProvider(Cipher.java:864)
at javax.crypto.Cipher.init(Cipher.java:1396)
at javax.crypto.Cipher.init(Cipher.java:1327)
at com.software.dev.util.MainEntrance.Encrypt(MainEntrance.java:83)
at com.software.dev.util.MainEntrance.main(MainEntrance.java:23)
此错误原因时因为jdk默认是不允许进行256位密钥的AES加解密,解决的办法有两种情况,跟jdk的版本有关,暂时我遇到问题分为两个,一个是jdk1.8.151以前的版本和jdk1.8.151及以后的版本,本人解决方法如下。
二、解决方案
1.jdk1.8.151之前的版本
在这个版本之前的djk需要替换$JAVA_HOME/jre/lib/security目录下的权限文件,下载好文件之后直接替换文件即可,如下图。