【发布时间】:2016-09-01 01:55:34
【问题描述】:
通读 Ruby 文档2.3.0,其中说明了 Ruby 代码用于生成随机数的策略。
- openssl
- /dev/urandom
- Win32
但是在查看2.3.0 源时,我没有看到任何使用/dev/urandom 的迹象。
至少2.2.2 具有/dev/urandom 逻辑。
如果我错了,请纠正我。我只是在帮助自己理解随机数是如何在 Ruby 中生成的。
【问题讨论】:
通读 Ruby 文档2.3.0,其中说明了 Ruby 代码用于生成随机数的策略。
但是在查看2.3.0 源时,我没有看到任何使用/dev/urandom 的迹象。
至少2.2.2 具有/dev/urandom 逻辑。
如果我错了,请纠正我。我只是在帮助自己理解随机数是如何在 Ruby 中生成的。
【问题讨论】:
您必须查看Random.raw_seed 实现,它可以在random.c 中找到。
而且由于文档没有提到它:在尝试从 /dev/urandom 读取之前,代码会尝试在最近的 Linux 版本上调用 getrandom(2)(请参阅 fill_random_bytes())。
【讨论】: