![Windows JVMレベルでの/dev/urandomに相当するものは何ですか](https://rvso.com/image/718144/Windows%20JVM%E3%83%AC%E3%83%99%E3%83%AB%E3%81%A7%E3%81%AE%2Fdev%2Furandom%E3%81%AB%E7%9B%B8%E5%BD%93%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B.png)
最近、エントロピー不足と 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で見つけました。引用文は次のとおりです。
「Sun」プロバイダの「SHA1PRNG」および「NativePRNG」SecureRandom 実装のシード データのプライマリ ソースを選択します。(他の SecureRandom 実装でもこのプロパティが使用される場合があります。)
Unix 系システム (Solaris/Linux/MacOS など) では、「NativePRNG」および「SHA1PRNG」実装は、file:/dev/random などの特殊なデバイス ファイルからシード データを取得します。
Windows システムでは、URL「file:/dev/random」または「file:/dev/urandom」を指定すると、SHA1PRNG のネイティブ Microsoft CryptoAPI シード メカニズムが有効になります。
デフォルトでは、「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.