前言:
公司项目有用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包而已,哎当时还是菜,菜还不看源码…
文章讲述了在项目中使用AES加密遇到BC库问题,由于JCE默认策略文件不支持,作者分享了解决方案,包括更新策略文件、手动安装BouncyCastleJCE提供程序,以及针对不同JDK版本的适配措施。
371





