背景介绍

linux中下单参数加密报错:

java.security.spec.InvalidKeySpecException: encoded key spec not recognised


解决方法:
解决java.security.spec.InvalidKeySpecException: encoded key spec not recognised:

第一步:在 jdk的 /jdk/jre/lib/security这个目录下,java.security 这个文件增加配置:ecurity.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider

security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
//添加下面这行
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider

第二步:将jar包 bcprov-jdk15to18-1.66.jar 放到jdk的 /jdk/jre/lib/ext 这个目录下。

重启程序,下单加密参数成功!

个人猜测是因为程序中存在其他的支付加密jar包,导致冲突了,因为再本地运行没有问题,在测试的linux重新部署了一个测试的也没有问题,只有再liunx生成环境中报错了。

其他踩坑:

 1、jdk8版本要使用bcprov-jdk15to18的包,版本更具需要来,1.66及以下的版本如图所示,该方法是公共,1.66以上的私有的不能引用,我这里用的是1.66版本,如果有版本冲突要解决

bcprov-jdk15to18的依赖:

        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15to18</artifactId>
            <version>1.66</version>
        </dependency>

bcprov-jdk15to18的解决冲突参考依赖:

        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15to18</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
            <version>1.66</version>
        </dependency>

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐