8

我正在尝试使用以下功能创建 IV:

mcrypt_create_iv(32, MCRYPT_DEV_RANDOM)

这会导致脚本在超过 60 秒后超时。(也许更多?)但是当我使用 时URANDOM,它几乎可以立即正常工作。从我读到的内容来看,它应该需要大约 4 秒MCRYPT_DEV_RANDOM,但肯定需要太长时间。错误日志中没有任何内容。

我在 ubuntu 12.04 服务器上安装了 apache2 和 php5。

我在我的 centos 服务器上运行了完全相同的代码,没有任何问题。

4

2 回答 2

16

RANDOM 和 Unblocking-RANDOM (URANDOM) 都会为您提供随机数据,但是如果“熵井”由于过度使用而变干,RANDOM 会阻塞,并在补充后重新启动,但 URANDOM 不会。

优点:URANDOM 不会阻塞。缺点:如果没有熵,URANDOM 会为您提供并非真正随机的数据。

出于加密目的,除非你真的很偏执,否则我认为 URANDOM 就足够了。

请参阅此 Ubuntu 页面: http: //manpages.ubuntu.com/manpages/jaunty/man4/random.4.html

我(错误地)认为 RANDOM 源是用户可控制的,但似乎并非如此。显然,那台计算机上没有发生任何事情,因此内核熵生成器没有什么可研究的。

从好的方面来说,据说 URANDOM 生成器非常好,推荐用于几乎所有东西。

(我正在编辑我以前的一些对你不起作用的建议,因为它们至少需要重新编译 PHP)。

于 2012-06-23T23:35:55.220 回答
1

实际上 /dev/random 和 /dev/urandom 都给你同样的随机性和安全性。/dev/random 的神话是如何阻塞的以及为什么要使用它,这是一个很长的故事。寻找,“随机/随机的神话”

于 2015-05-18T22:26:01.177 回答