Was ist das /dev/urandom-Äquivalent auf der Windows-JVM-Ebene?

Was ist das /dev/urandom-Äquivalent auf der Windows-JVM-Ebene?

Vor kurzem hatte ich Probleme, weil der Mangel an Entropie und die Blockierung von Rand-IO zu Hängern führten. Unter Linux kann ich Folgendes tun:

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

Was ist das Äquivalent unter Windows? Wir führen die App sowohl auf Linux- als auch auf Windows-Servern aus, Linux-Server mit OpenJDK JRE und Windows-Server mit Oracle JRE.

Ich habe viele Vorschläge dazu gefunden CryptGenRandom, aber wie kann ich das auf JVM-Ebene an die App weitergeben?

Antwort1

Ich habe eine Dokumentation in jre/lib/security/java.security gefunden, die dies bestätigt. Hier ist das Zitat

Wählen Sie die primäre Quelle der Seed-Daten für die SecureRandom-Implementierungen „SHA1PRNG“ und „NativePRNG“ im „Sun“-Anbieter. (Andere SecureRandom-Implementierungen verwenden diese Eigenschaft möglicherweise ebenfalls.)

Auf Unix-ähnlichen Systemen (z. B. Solaris/Linux/MacOS) beziehen die Implementierungen „NativePRNG“ und „SHA1PRNG“ Seed-Daten aus speziellen Gerätedateien wie file:/dev/random.

Auf Windows-Systemen wird durch die Angabe der URLs „file:/dev/random“ oder „file:/dev/urandom“ der native Microsoft CryptoAPI-Seeding-Mechanismus für SHA1PRNG aktiviert.

Standardmäßig wird versucht, das durch die Sicherheitseigenschaft „securerandom.source“ angegebene Gerät zur Entropieerfassung zu verwenden. Wenn beim Zugriff auf die angegebene URL eine Ausnahme auftritt:

 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.

verwandte Informationen