Windows
Windows JVM 級別的 /dev/urandom 等價物是什麼
最近,我遇到了麻煩,因為缺少熵和阻塞 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.