前言:

公司项目有用AES加密的,报错原因是BC(Bouncy Castle)提供的加密服务时,JCE(Java Cryptography Extension)无法进行验证。这通常是由于 JCE 的默认策略文件不支持所需的加密算法,导致 BC 无法被正确验证。

尝试方法:

1、更新策略文件
2、手动安装 Bouncy Castle 提供的 JCE 提供程序
3、使用 Maven 或 Gradle 等构建工具引入 Bouncy Castle 依赖

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.68</version> <!-- 替换为你需要的版本号 -->
</dependency>

4、检查 JDK 版本兼容性
以上方法我都试过,可能方式不对,有用的只有方法2,其他的不做陈述。

详细操作:

步骤一:检查jdk是否用的openjdk8,如果是更换成oracle的jdk8(我尝试了openjdk发现不可以绕过),并编辑jre\lib\security\java.security,添加如下行security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider
在这里插入图片描述
在这里插入图片描述

步骤二:去maven官网,手动下载一个jar,自行选择适合你jdk版本的,我下的是下图的“https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on/1.77”在这里插入图片描述
在这里插入图片描述
步骤三:复制bc*.jar到/youJDK/jre/lib/ext,重启你的jar服务即可。
在这里插入图片描述
总结:虽然我用了oracleJDK解决了问题,但我对openJDK还是充满信心,开源万岁!

20250928时隔N日,我又回来做总结说明,在我的项目中是用Java + BouncyCastle 实现的 RSA 密钥生成与加解密工具类,指定了 BouncyCastle 作为安全算法实现库,而不是用 JDK 自带的默认实现,本质上跟jdk没什么关系,只是缺少BouncyCastle这一jar包而已,哎当时还是菜,菜还不看源码…

Logo

一站式 AI 云服务平台

更多推荐