我们的团队正在使用SecureRandom生成密钥对列表(SecureRandom传递给KeyPairGenerator).我们无法就以下两个选项中的哪一个达成一致:
每次我们需要生成密钥对时创建一个新实例
初始化静态实例并将其用于所有密钥对
哪种方法通常更好,为什么?
补充:我的直觉是第二种选择更安全.但我唯一的论点是基于伪随机性来自当前时间戳的假设的理论攻击:某人可能看到密钥对的创建时间,猜测周围时间间隔中的时间戳,计算可能的伪随机序列,并获得关键材料.
补充:我对基于时间戳的确定性的假设是错误的.这是Random和SecureRandom之间的区别.因此,看起来答案是:在安全性方面它并不重要.
使用单个随机数发生器(RNG)生成多个数字与每个发生器生成一个数字并丢弃它之间有区别吗?这两种实现都会产生同等随机的数字吗?普通RNG和安全RNG之间是否存在差异?
我有一个Web应用程序,应该代表客户生成一个随机数列表.也就是说,从每个客户的角度来看,数字应该是随机的.这是否意味着我需要为每个客户会话保留一个单独的随机RNG?或者我可以在所有会话中共享一个RNG吗?或者我可以根据请求创建和丢弃RNG吗?
更新:这个问题与随机序列的子集是否也是随机的有关?