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

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

Недавно я столкнулся с проблемами, поскольку отсутствие энтропии и блокировка rand IO вызывали зависания. На 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.

По умолчанию делается попытка использовать устройство сбора энтропии, указанное свойством безопасности "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.

Связанный контент