问题描述需要使用AES加密方式为(AES/CBC/PKCS7Padding):
环境:JDK20,centos7.
开发的时候一切正常,服务布到服务器是Centos后AES加密报错:
Cannot find any provider supporting PKCS7Padding.
试过的办法:
1、在工具类的静态方法中加(没解决):
public class AesUtil {
static {
Security.addProvider(new BouncyCastleProvider());//让系统支持 PKCS7Padding加密
}
}
2、修改JDK的security设置(没解决):
1.在 jdk安装目录中(%JAVA_HOME%\jre\lib\ext)添加 jar 包 bcprov-jdk16-1.46.jar 2.在 jdk安装目录下( %JAVA_HOME%\jre\lib\security )修改 java.security 文件,的 security.provider.7=com.sun.security.sasl.Provider 替换为security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider
3、更换JDK(己解决,我的是这个原因解决的,你的需要试试)
我原来的sun JDK20是官网下载的,什么办法都试了,就是提示:Cannot find any provider supporting PKCS7Padding。
后来换了一个亚马逊的JDK,就好了。
下面是卸载原来的和安装新的:linux常用命令
1、下载:wget https://corretto.aws/downloads/latest/amazon-corretto-20-x64-linux-jdk.rpm
2、卸载旧版的:
1、查看旧版: rpm -qa |grep jdk 或 rpm -qa |grep java 具体看你原来安装的包名
2、卸载:rpm -e jdkXXXXXXX
3、安装新版本:
1、rpm -ivh amazon-corretto-20-x64-linux-jdk.rpm
2、安装的目录在:/usr/lib/jvm下面