Windows JVM 级别上的 /dev/urandom 等效项是什么

Windows JVM 级别上的 /dev/urandom 等效项是什么

最近,我遇到了麻烦,因为熵不足和阻止随机 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.

相关内容