Java 的 SecureRandom 如何知道系统上可用的 NativePRNG 实现?
How does Java's SecureRandom know which implementation of NativePRNG is available on the system?
使用java.security.SecureRandom
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
将根据
http://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html
使用 NativePRNG 的系统实现产生随机字节。
Java 运行时如何知道这个实现在系统中的什么位置?在 GNU/Linux 上通常是 /dev/random 但在 Windows 上不是这种情况。某处有配置文件吗?
谢谢
通过检查 SecureRandom.java 的源代码可以收集到以下信息,它在 src.zip 中与 JDK 一起发布。
使用来源,卢克!
How does Java runtime know where on the system this implementation it is?
这是 JDK 的平台特定部分。
SecureRandom
枚举已注册的 java.security.Provider
实例,寻找一个提供类型 "SecureRandom"
的 java.security.Provider.Service
的实例。
JDK 通常附带一个内部默认安全提供程序,它以特定于平台的方式实现。
如果可以找到 none,它将回退到纯 java SHA1PRNG。
使用java.security.SecureRandom
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
将根据
http://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html
使用 NativePRNG 的系统实现产生随机字节。
Java 运行时如何知道这个实现在系统中的什么位置?在 GNU/Linux 上通常是 /dev/random 但在 Windows 上不是这种情况。某处有配置文件吗?
谢谢
通过检查 SecureRandom.java 的源代码可以收集到以下信息,它在 src.zip 中与 JDK 一起发布。
使用来源,卢克!
How does Java runtime know where on the system this implementation it is?
这是 JDK 的平台特定部分。
SecureRandom
枚举已注册的 java.security.Provider
实例,寻找一个提供类型 "SecureRandom"
的 java.security.Provider.Service
的实例。
JDK 通常附带一个内部默认安全提供程序,它以特定于平台的方式实现。
如果可以找到 none,它将回退到纯 java SHA1PRNG。