【问题标题】:Seeding a secure random number in java在java中播种一个安全的随机数
【发布时间】:2012-03-08 00:39:00
【问题描述】:

两个以相同值作为种子的java.security.SecureRandom 实例最初会给出相同的随机数序列吗?

我问这个是因为我希望客户端和服务器中的随机数序列相同。如果他们都使用相同的种子值怎么办。序列是否相同,或者有什么方法可以使序列相同?

【问题讨论】:

    标签: java random prng


    【解决方案1】:

    来自the API docs

    如果Random 的两个实例使用相同的种子创建,并且为每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。

    【讨论】:

    • 请仔细阅读问题,我使用的是安全随机,而您说的是随机。
    • SecureRandomRandom 的子类,我相信 API 中的这句话仍然适用。根据种子的定义,两个具有相同种子的随机生成器将提供相同的输出——这就是种子的全部点。
    • 要明确一点,java.security.SecureRandom 的行为取决于所选的实现,而java.util.Random 的行为如前所述。
    【解决方案2】:

    如果他们都使用相同的种子值怎么办。顺序会一样吗?

    不,他们绝对不会。至少在 Oracle 的 Java 7 SDK 实现中没有。请参阅我的示例代码in this SO post。除了提供的种子之外,实现似乎还可以选择使用其他随机源。

    【讨论】:

      猜你喜欢
      • 2012-01-30
      • 2010-11-12
      • 2015-05-10
      • 2016-07-22
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 2021-06-06
      • 2010-10-05
      相关资源
      最近更新 更多