KeyFactory.generatePublic () занимает много времени / зависает в течение длительного времени - PullRequest
0 голосов
/ 11 мая 2018

Я использую следующий ключевой экземпляр фабрики:

factory = KeyFactory.getInstance("RSA", "BCFIPS");

Когда я генерирую открытый ключ в приведенном ниже коде, он долго зависает:

publickey = factory.generatePublic(spec);

Иногда код возвращается через 1 минуту, иногда через 5 минут, а иногда и через 10 минут.

Любая идея, если есть какая-либо известная проблема. Эта проблема возникает только на RHEL 6. В RHEL7 она работает быстро.

1 Ответ

0 голосов
/ 12 мая 2018

Это проблема с медленной генерацией энтропии.См. Как избежать задержек JVM, вызванных генерацией случайных чисел .

Суть в том, что вы должны использовать /dev/urandom вместо /dev/random.Откройте файл $JAVA_HOME/jre/lib/security/java.security в текстовом редакторе и измените значение securerandom.source с file:/dev/random на file:/dev/urandom.

Однако учтите, что качество генерируемых случайных чисел будет ниже, и есливы беспокоитесь о атаках на уровне штата, вам просто нужно принять задержку и продолжать использовать /dev/random.

Обратите внимание, что когда-то была проблема, при которой система использовала бы /dev/random, даже если вы указали/dev/urandom.Если вы измените это значение и все еще увидите большие задержки, измените его на /dev/./urandom, чтобы избежать жестко закодированного теста.

...