Java公钥工厂异常

Java公钥工厂异常,java,exception,rsa,public-key,Java,Exception,Rsa,Public Key,将Java升级到1.8.0_171后,在RSA公钥编写过程中,我总是遇到以下异常: java.security.InvalidKeyException: exponent is larger than modulus 它在升级之前就可以工作了,有人知道怎么处理它吗 RSAPublicKeySpec publicSpec = new RSAPublicKeySpec(new BigInteger(modulus), new BigInteger(exponent)); KeyFactory fa

将Java升级到1.8.0_171后,在RSA公钥编写过程中,我总是遇到以下异常:

java.security.InvalidKeyException: exponent is larger than modulus
它在升级之前就可以工作了,有人知道怎么处理它吗

RSAPublicKeySpec publicSpec = new RSAPublicKeySpec(new BigInteger(modulus), new BigInteger(exponent));
KeyFactory factory = KeyFactory.getInstance("RSA");
PublicKey pub = factory.generatePublic(publicSpec); <----- EXCEPTION
RSAPublicKeySpec publicSpec=new RSAPublicKeySpec(new biginger(模数)、new biginger(指数));
KeyFactory=KeyFactory.getInstance(“RSA”);

PublicKey pub=factory.generatePublic(publicSpec) 我发现JDK-8174756引用的Java中有一个变化:

安全libs/javax.crypto RSA公钥验证

在8u161中,SunRsaSign提供程序中的RSA实现将拒绝任何RSA 其指数不在由定义的有效范围内的公钥 PKCS#1版本2.2。此更改将影响JSSE连接以及 基于JCE构建的应用程序

JDK-8174756(非公开)

这基本上意味着模量不应该是负值。 在这种情况下,重要的是以以下方式将
biginger
构建为正:

BigInteger(1, modulus)
BigInteger(1, exponent)

更改后,它再次工作。

我不确定升级是否是原因,这可能只是巧合。该错误消息很好地表明模数和/或指数的数据源已损坏。