Java的SecureRandom如何知道系统中哪些NativePRNG实现可用?

时间:2015-01-22 12:22:53

标签: java cryptography jvm

使用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上并非如此。在某处有配置文件吗?

由于

1 个答案:

答案 0 :(得分:1)

通过检查SecureRandom.java的源代码可以收集以下信息,该源代码随一起提供在 src.zip 中。

使用来源,卢克!

  

Java运行时如何知道系统在这个实现中的位置?

这是JDK的平台特定部分。

SecureRandom枚举已注册的java.security.Provider个实例,查找提供java.security.Provider.Service类型"SecureRandom"的实例。 JDK通常附带一个内部默认安全提供程序,它以特定于平台的方式实现它。

如果找不到任何内容,则会回退到纯java SHA1PRNG。