我是用hutool做RSA加密时候出现这个问题的,具体原因网上各说各的,解决办法也试过下载jar、配置jvm,用是能用,但是我们是在公共包写的,部署新服务的时候就麻烦了。
看了下hutool报错的地方,顺着找了找,发现有这个
在代码执行前加上GlobalBouncyCastleProvider.setUseBouncyCastle(false);
public static String rsaEncode(String data) {
GlobalBouncyCastleProvider.setUseBouncyCastle(false);
RSA pub = SecureUtil.rsa(null, publicKey);
return pub.encryptHex(data, KeyType.PublicKey);
}
尝试了下,确实可以正常加密了。
猜想,之前用的BC加密实现,JDK应该是有自己的实现的?
找了找确实这样的,Java实现RSA算法(分别通过JDK、Bouncy Castle、Commons Codec实现)