java.security.spec.InvalidKeySpecException ошибка при запуске модульного теста с Maven - PullRequest
0 голосов
/ 29 марта 2019

Я обновляю свой проект с Java 1.7 до Java 1.8.Когда я запускаю все тесты проекта с командной строкой maven, некоторые тесты не выполняются с ошибкой java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: exponent is smaller than 3

Однако, когда я запускаю только класс, содержащий эти неудачные тесты, с maven или Eclipse, они работают.

public static PublicKey getPublicKey(final byte[] publicKeyBytes) throws Exception {
    final X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
    return KeyFactory.getInstance("RSA").generatePublic(keySpec);
}

Проблема в линии

return KeyFactory.getInstance("RSA").generatePublic(keySpec);

Исключение трассировки стека:

java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: exponent is smaller than 3
    at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:205)
    at java.security.KeyFactory.generatePublic(KeyFactory.java:334) 
    at sun.reflect.GeneratedMethodAccessor724.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:250)
    at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)
    at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:94)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:961)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:910)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:873)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:775)
    at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:386)
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:640)
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:263)
    at com.sun.xml.ws.transport.http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:113)
    at com.sun.xml.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:97)
    at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
    at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
    at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)
    at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)
    at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
    at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.security.InvalidKeyException: exponent is smaller than 3
    at sun.security.rsa.RSAPublicKeyImpl.checkExponentRange(RSAPublicKeyImpl.java:99)
    at sun.security.rsa.RSAPublicKeyImpl.<init>(RSAPublicKeyImpl.java:88)
    at sun.security.rsa.RSAKeyFactory.generatePublic(RSAKeyFactory.java:298)
    at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:201)
...