Что такое эквивалент /dev/urandom на уровне Windows JVM

В последнее время я сталкиваюсь с неприятностями, потому что отсутствие энтропии и блокировка случайных операций ввода-вывода привели к зависаниям. В Linux я могу сделать следующее:

JAVA_OPTS=-Djava.security.egd=/dev/urandom ./myStartScript.sh

Что эквивалентно в Windows? Мы запускаем приложение как на серверах Linux и Windows, так и на серверах Linux, использующих OpenJDK JRE, и на серверах Windows, использующих Oracle JRE.

Я нашел много предложений о CryptGenRandom, но как я могу передать это приложению на уровне JVM?

1 ответ

Решение

Я нашел документацию в jre/lib/security/java.security, которая подтверждает это. Вот цитата

Выберите основной источник начальных данных для реализаций SecureRandom "SHA1PRNG" и "NativePRNG" в поставщике "Sun". (Другие реализации SecureRandom также могут использовать это свойство.)

В Unix-подобных системах (например, Solaris/Linux/MacOS) реализации "NativePRNG" и "SHA1PRNG" получают начальные данные из специальных файлов устройств, таких как file:/dev/random.

В системах Windows указание URL-адресов "file:/dev/random" или "file: / dev / urandom" активирует собственный механизм заполнения Microsoft CryptoAPI для SHA1PRNG.

По умолчанию делается попытка использовать устройство для сбора энтропии, указанное в свойстве Security "securerandom.source". Если исключение происходит при доступе к указанному URL:

 SHA1PRNG:
     the traditional system/thread activity algorithm will be used.

 NativePRNG:
     a default value of /dev/random will be used.  If neither
     are available, the implementation will be disabled.
     "file" is the only currently supported protocol type.
Другие вопросы по тегам