我正在用 Java 实现一个应用程序,并使用 SecureRandom 来生成随机性。我需要能够加密 10 亿个文件。我在 StackOverflow 上寻找问题的答案,但没有找到确切的答案。大家都很模糊:
\n\n所以我决定自己算一下,看看是否有人可以帮我检查一下。关于 Java 8 中 SecureRandom\xe2\x80\x99s 当前的实现,我们了解哪些事实?事实上,从我发现的消息来源来看,存在一些争议。
在通过调用nextBytes()、等nextInt()生成随机性时,它在内部使用 SHA1PRNG nextLong()(请参阅Tersesystems、Cigital)。
Cigital 对 SecureRandom 底层功能的解释与Java 文档的官方解释相矛盾。Oracle 的官方文档指出,NativePRNG、NativePRNGBlocking、NativePRNGNonBlocking 和 Windows-PRNG 始终使用本机随机源,而不是 Java\xe2\x80\x99s 自己的 SHA1PRNG 算法(这个答案和这个也提到了)。Cigital\xe2\x80\x99s 链接表示 Java 始终使用 …