【发布时间】:2011-11-28 07:34:22
【问题描述】:
在我们的代码库中找到以下代码:
public static final int DEFAULT_LENGTH = 16;
private static SecureRandom SR;
static
{
try
{
SecureRandom sd0 = new SecureRandom();
SR = new SecureRandom(sd0.generateSeed(DEFAULT_LENGTH * 2));
}
catch (Exception e){}
}
这里创建了一个默认的SecureRandom,然后它用于为另一个种子创建种子,该种子将在课程中稍后使用。这真的有必要吗?第二个是否比第一个更好,因为这样做了?
第二次生成种子时,给出字节数,这重要吗? SecureRandom 种子的字节数与另一个可能更好或更差?用于播种它的字节数是否应该与它的用途相对应?
如果未调用 setSeed,则第一次调用 nextBytes 将强制 SecureRandom 对象自行播种。如果之前调用了 setSeed,则不会发生这种自播。 - javadoc
自播还不够好吗?是否取决于它的用途?
注意:对于某些上下文,它用于为存储在数据库中的内容创建随机 id 的类中。
【问题讨论】: