Windows JVM 等級上的 /dev/urandom 等效項是什麼

Windows JVM 等級上的 /dev/urandom 等效項是什麼

最近,我遇到了麻煩,因為缺乏熵和阻塞 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.

相關內容