【发布时间】:2021-05-27 12:55:38
【问题描述】:
来自java.util.Random 的java.security.SecureRandom 的种子能否削弱加密性强的随机数生成器?
我看到了这段代码,想知道为什么要以这种特定方式完成。
randomGenerator = new SecureRandom();
final Random rnd = new Random();
randomGenerator.setSeed(rnd.nextLong());
从文档来看,setSeed 的调用永远不会减少随机性。那么为什么还是要调用setSeed 呢?
public void setSeed(long seed)
使用给定长种子中包含的八个字节重新设置此随机对象的种子。给定的种子是对现有种子的补充,而不是替代。 因此,保证重复调用永远不会减少随机性。
docs.oracle.com
【问题讨论】:
-
那么为什么还要调用 setSeed 呢? 因为加密令人困惑,代码的作者也很困惑。
标签: java random cryptography