Windows

Windows JVM 級別的 /dev/urandom 等價物是什麼

  • September 19, 2018

最近,我遇到了麻煩,因為缺少熵和阻塞 rand IO 導致掛起。在 Linux 上,我可以執行以下操作:

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

Windows 上的等價物是什麼?我們在 Linux 和 Windows 伺服器、使用 OpenJDK JRE 的 Linux 伺服器和使用 Oracle JRE 的 Windows 伺服器上執行該應用程序。

我發現了很多關於 的建議CryptGenRandom,但是如何將其傳遞給 JVM 級別的應用程序?

我在 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.

引用自:https://serverfault.com/questions/899158