是的,但您必须使用其他提供商。 当您尝试使用384位RSA密钥时,Sun RSAKeyFactory ( KeyFactory的基础服务提供程序实现)和RSAKeyPairGenerator返回异常。
正确安装Bouncy Castle提供程序后,这将有效:Security.addProvider(new BouncyCastleProvider());
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
kpg.initialize(384);
KeyPair kp = kpg.generateKeyPair();
PublicKey genPub = kp.getPublic();
byte[] enc = genPub.getEncoded();
KeyFactory kf = KeyFactory.getInstance("RSA", "BC");
X509EncodedKeySpec ks = new X509EncodedKeySpec(enc);
PublicKey decPub = kf.generatePublic(ks);
Signature sig = Signature.getInstance("SHA1withRSA", "BC");
sig.initVerify(decPub);
byte[] faultySig = new byte[384 / Byte.SIZE];
boolean verifies = sig.verify(faultySig);
System.out.println(verifies + " for " + decPub.getAlgorithm());
请注意,由于KeyFactory生成的密钥类型,即使未指定"BC" , Signature实例的init方法也将默默使用Bouncy Castle提供程序。