为什么在使用SecureRandom类时可以使用Random Class of Java?

Why use the Random Class of Java when you can Use the SecureRandom Class?

本问题已经有最佳答案,请猛点这里访问。

据我所知,有两个主要的Java类能够执行伪随机活动:EDCOX1的0个类和EDCOX1的1个类。两者都产生伪随机数。但是,SecureRandom类生成加密的安全数字。

当您可以使用产生更多不可预测数字的SecureRandom类时,为什么还要使用Random类?许多程序员(尤其是电子游戏程序员)只使用Random类,但这两个类的核心方法几乎相同(都可以生成一个伪随机整数)。这两个类也可以用长值作为种子。

我唯一的解释是,Random类的运行速度比SecureRandom类快。这是真的吗?如果不是,那么为什么许多Java程序员更喜欢EDCOX1 0类,而不是EDCOX1?1类?


有很多可能的原因

  • Random比较老,所以有更多的例子。
  • 随机对于许多情况来说是足够随机的,而且速度更快。
  • Random在所有平台上生成相同的结果,并且始终为种子生成相同的结果(如果不同时指定策略,则默认的SecureRandom可能不同)