Java 当种子带有随机性时,随机性会减弱吗?
来自Java 当种子带有随机性时,随机性会减弱吗?,java,random,cryptography,Java,Random,Cryptography,来自java.util.Random的java.security.SecureRandom的种子会削弱加密强随机数生成器吗 我看到了这段代码,想知道为什么要用这种特定的方式来做 randomGenerator=new SecureRandom(); 最终随机rnd=新随机(); randomGenerator.setSeed(rnd.nextLong()); 从文档中可以看出,setSeed的调用永远不会减少随机性。那么,为什么要调用setSeed public void setSeed(长种
java.util.Random
的java.security.SecureRandom
的种子会削弱加密强随机数生成器吗
我看到了这段代码,想知道为什么要用这种特定的方式来做
randomGenerator=new SecureRandom();
最终随机rnd=新随机();
randomGenerator.setSeed(rnd.nextLong());
从文档中可以看出,setSeed
的调用永远不会减少随机性。那么,为什么要调用setSeed
public void setSeed(长种子)
使用给定长种子中包含的八个字节重新设定此随机对象的种子。给定的种子是对现有种子的补充,而不是替代因此,重复呼叫保证不会减少随机性。
当使用CSPRNG时,加密强度与用于种子的熵的位强度相同 CSPRNG将产生几乎无限量的伪随机熵,尽管在现实中,该伪随机熵的实际强度仅和CSPRNG潜在种子状态的熵一样强 因此,如果您只使用
java.util.Random
中的一个种子,您将遇到麻烦
谢天谢地,内核和其他源代码用于为java.security.SecureRandom
使用的系统CSPRNG播种,因此,如上面的示例代码所示,向其中“添加”/“混合”并不能使其“减少”随机性或降低熵
因此:
java.util.Random
种子毫无价值randomGenerator.setSeed(rnd.nextLong())代码>不应涉及加密工程