我正在尝试用函数创建一个IV:
mcrypt_create_iv(32, MCRYPT_DEV_RANDOM)
这导致脚本超过60秒后超时。 (也许更多?)但是当我使用URANDOM
时,它几乎可以立即正常工作。根据我的阅读,MCRYPT_DEV_RANDOM
应该花费大约4秒钟,但这肯定花了太长时间。错误日志中没有任何内容。
我在ubuntu 12.04服务器上安装了apache2和php5。
我在我的centos服务器上运行完全相同的代码没有问题。
答案 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块的神话以及你应该使用它的原因。寻找,“随机/随机的神话”