本地使用了加密类、并且运行正常、 用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))

setUseBouncyCastlehttps://apidoc.gitee.com/loolly/hutool/cn/hutool/crypto/GlobalBouncyCastleProvider.html#setUseBouncyCastle-boolean-

  • 启用 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的主要组成部分

  1. API接口:定义了用于执行各种加密操作的接口,比如javax.crypto.Cipher用于加密和解密,javax.crypto.KeyGenerator用于生成密钥等。

  2. Provider机制:JCE采用了一种称为“provider”的架构来实现加密服务。一个provider就是一个实现了JCE中定义的某些或全部加密服务的软件包。Java自带了一些默认的provider,例如SunJCE provider,同时允许用户安装第三方provider,比如Bouncy Castle。

  3. 加密算法支持:JCE支持多种加密算法,包括对称加密算法(如AES、DES)、非对称加密算法(如RSA)、哈希函数(如SHA-256),以及MAC(Message Authentication Code)等。

使用场景

  • 数据加密与解密:保护存储或传输的数据不被未授权访问。
  • 数字签名:确保消息完整性并验证发送者的身份。
  • 密钥管理:安全地生成、存储和分发密钥。

Logo

一站式 AI 云服务平台

更多推荐