gpt4 book ai didi

java - 我应该播种 SecureRandom 吗?

转载 作者:IT老高 更新时间:2023-10-28 20:28:17 33 4
gpt4 key购买 nike

在我们的代码库中找到以下代码:

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,然后它用于为另一个种子创建一个种子,该种子将在以后的类(class)中使用。这真的有必要吗?第二个是否比第一个更好,因为这样做了?

第二次生成种子时,给出字节数,这重要吗?一个 SecureRandom 与另一个不同的字节数可能会更好或更差吗?用于播种它的字节数是否应该与它的用途相对应?

If setSeed is not called, the first call to nextBytes will force the SecureRandom object to seed itself. This self-seeding will not occur if setSeed was previously called. - javadoc

自播还不够好吗?是否取决于它的用途?


注意:对于某些上下文,它用于为存储在数据库中的内容创建随机 id 的类中。

最佳答案

我认为这完全没有必要,因为正如您引用的 Javadoc 明确指出的那样:默认构造的 SecureRandom 实例自己播种。写这篇文章的人可能不知道。

他们实际上还可能通过强制使用可能不适合 RNG 实现的固定种子长度来降低安全性。

最后,假设代码段未更改,那么无声异常吞咽也不是很好的编码风格。

关于java - 我应该播种 SecureRandom 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7608089/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com