为了与服务进行互操作,我必须使用RSA来加密某些值,该密钥的大小似乎小于Java上的最小512位。我有什么办法可以放宽该政策?
BigInteger e = new BigInteger("13082845549543033994073971762152947067", 10);
BigInteger m = new BigInteger("229110545576645850236522690668306544921", 10);
RSAPublicKeySpec spec = new RSAPublicKeySpec(m, e);
KeyFactory keyFac = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFac.generatePublic(spec);
// ^^^^ java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: RSA keys must be at least 512 bits long
您可以使用BouncyCastle提供程序。只需在您的代码之前加上
java.security.Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
并改变线
KeyFactory keyFac = KeyFactory.getInstance("RSA");
进入
KeyFactory keyFac = KeyFactory.getInstance("RSA", "BC");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句