Исключение фабрики Java RSAPublicKey - PullRequest
0 голосов
/ 24 апреля 2018

После обновления 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

1 Ответ

0 голосов
/ 25 апреля 2018

Я обнаружил, что в Java произошло изменение с 1.8.0_161, на которое ссылается JDK-8174756:

Проверка открытого ключа RSA В 8u161 реализация RSA в поставщике SunRsaSign отклонитлюбой открытый ключ RSA с показателем степени, который не находится в допустимом диапазоне, как определено в PKCS # 1 версии 2.2.Это изменение повлияет на соединения JSSE, а также на приложения, построенные на JCE.

Это означает, что модуль не должен быть отрицательным.В этом случае важно построить BigInteger следующим образом, чтобы быть положительным:

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

После этого изменения он снова работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...