为了与服务进行互操作,我必须使用 RSA 加密一些值,其 key 大小似乎小于 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
最佳答案
我检查了您的代码,得到以下结果:
SunPKCS11-NSS RSA public key, 128 bits (id 1, session object)
modulus: 229110545576645850236522690668306544921
public exponent: 13082845549543033994073971762152947067
异常具体发生在哪里?
关于Java 公钥大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25849076/