Java公钥工厂异常
将Java升级到1.8.0_171后,在RSA公钥编写过程中,我总是遇到以下异常: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.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)
更改后,它再次工作。我不确定升级是否是原因,这可能只是巧合。该错误消息很好地表明模数和/或指数的数据源已损坏。