最近springboot做项目时,在window上启动 调用服务没有问题,可是部署在linux后服务之间调用却出现了问题
debug看报错信息,刚开始看到的报错的信息
报的是javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher
以为是公司框架的AES加密解密方法的问题,一直修改调试,可是一直解决不了
后来仔细看debug发现有一个错误被捕获了没细看
报错信息是
org.springframework.http.converter.HttpMessageNotReadableException: I/O error while reading input message; nested exception is java.io.IOException: java.lang.IllegalStateException: java.security.InvalidKeyException: No installedprovider supports this key: javax.crypto.spec.SecretKeySpec
这应该就是错误的根源了,经过大量的资料查询(google 百度)发现了java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.
处理方法: 在Java Oracle官方网站下载JCE无限制权限策略文件
JDK7的下载地址: