JCE cannot authenticate the provider BC
Bouncy Castle 是一个开源的加密库,提供了丰富的加密算法和协议支持。它是 Java Cryptography Extension (JCE) 的扩展,支持许多标准和非标准的加密算法。相比于 Java 自带的加密提供者(如 SunJCE),Bouncy Castle 提供了更多的功能和更高的灵活性。
本地使用了加密类、并且运行正常、 用hutool做RSA加密时候出现这个问题的!
import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.crypto.asymmetric.SM2;
结果到k8s报错:

后来一句话解决:
GlobalBouncyCastleProvider.setUseBouncyCastle(false);
原理如下:yGlobalBouncyCastleProvider (hutool-码云(gitee.com))
- 启用 Bouncy Castle 提供者:当设置为
true时,程序会优先使用 Bouncy Castle 提供的加密实现,而不是默认的 JCE 提供者。 - 如果设置为false,表示强制关闭Bouncy Castle而使用JDK
1. 什么是 Bouncy Castle?
Bouncy Castle 是一个开源的加密库,提供了丰富的加密算法和协议支持。它是 Java Cryptography Extension (JCE) 的扩展,支持许多标准和非标准的加密算法。相比于 Java 自带的加密提供者(如 SunJCE),Bouncy Castle 提供了更多的功能和更高的灵活性。
Bouncy Castle 的主要特点:
- 支持广泛的加密算法(如 AES、RSA、ECC、SHA 等)。
- 支持多种加密协议(如 TLS、CMS、OpenPGP 等)。
- 跨平台支持(Java 和 C#)。
- 活跃的社区支持和持续更新。
2 什么是 JCE ?
JCE(Java Cryptography Extension)是Java平台的一个扩展包,旨在提供更强的加密功能和算法支持。它为开发人员提供了执行加密操作如加密、解密、消息摘要生成、密钥生成和管理等的能力。JCE最初作为Java平台的安全组件的一个独立扩展被引入,但现在它已经被集成到了标准的Java Development Kit (JDK) 中。
JCE的主要组成部分
-
API接口:定义了用于执行各种加密操作的接口,比如
javax.crypto.Cipher用于加密和解密,javax.crypto.KeyGenerator用于生成密钥等。 -
Provider机制:JCE采用了一种称为“provider”的架构来实现加密服务。一个provider就是一个实现了JCE中定义的某些或全部加密服务的软件包。Java自带了一些默认的provider,例如SunJCE provider,同时允许用户安装第三方provider,比如Bouncy Castle。
-
加密算法支持:JCE支持多种加密算法,包括对称加密算法(如AES、DES)、非对称加密算法(如RSA)、哈希函数(如SHA-256),以及MAC(Message Authentication Code)等。
使用场景
- 数据加密与解密:保护存储或传输的数据不被未授权访问。
- 数字签名:确保消息完整性并验证发送者的身份。
- 密钥管理:安全地生成、存储和分发密钥。
更多推荐




所有评论(0)