MCRYPT_DEV_RANDOM冻结但MCRYPT_DEV_URANDOM正常工作

时间:2012-06-23 23:25:23

标签: php mcrypt

我正在尝试用函数创建一个IV:

mcrypt_create_iv(32, MCRYPT_DEV_RANDOM)

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

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

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

2 个答案:

答案 0 :(得分:15)

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

Pro:URANDOM不会阻止。 Con:URANDOM,如果没有熵,就会给你提供非真实的随机数据。

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

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

我(错误地)认为RANDOM源是用户可控的,但看起来它们不是。显然,在那台计算机上没有发生太多事情,因此内核熵生成器没有发现任何问题。

从好的方面来说,URANDOM发电机据说非常好,几乎推荐用于所有产品。

(我正在编辑我之前的一些不适合你的建议,因为它们至少需要重新编译PHP。)

答案 1 :(得分:1)

实际上/ dev / random和/ dev / urandom都给你相同的随机性和安全性。有一个很长的故事,如何/ dev / random块的神话以及你应该使用它的原因。寻找,“随机/随机的神话”