【发布时间】:2015-01-02 17:48:02
【问题描述】:
Java 在 java.secure.random 包中提供了一个加密安全的随机数生成器。
如果我考虑 RNG 的播种和循环重新实例化等问题,是否可以使用此数字生成器?或者我可以“按原样”使用数字生成器吗?
有人使用过这个生成器吗?
编辑:要求是:
a) 具有统计独立性
b) 在其范围内公平分布(在统计预期范围内)
c) 通过各种公认的统计测试
d) 具有强大的加密能力。
【问题讨论】:
-
进一步探索这个问题,我注意到最后的 SecureRandom 生成器是 SHA1。他们可能正在做一些显而易见的事情。否则 SHA1 的内部状态为 160 位,这不足以洗牌一副牌。这意味着无论您对 RNG 或 shuffle 算法做了什么,它仍然仅限于产生可能的排列的一个子集。严格来说,这并不是您的要求之一;所以也许没关系。
标签: java algorithm random prng