MCRYPT_DEV_RANDOM замерзает, но MCRYPT_DEV_URANDOM работает

Я пытаюсь создать IV с функцией:

mcrypt_create_iv(32, MCRYPT_DEV_RANDOM) 

это заставляет скрипт тайм-аут после более чем 60 секунд. (может быть больше?), но когда я использую URANDOM , он работает нормально почти мгновенно. Из того, что я прочитал, это займет около 4 секунд с MCRYPT_DEV_RANDOM , но это определенно занимает слишком много времени. В журнале ошибок ничего нет.

Я установил его с apache2 и php5 на сервере ubuntu 12.04.

Я без проблем запускал тот же самый код на моем сервере centos.

И RANDOM, и Unblocking-RANDOM (URANDOM) будут предоставлять вам случайные данные, но в то время как RANDOM будет блокироваться, если «энтропийная скважина» сохнет из-за чрезмерного использования и перезапустится, когда она будет пополнена, URANDOM не будет.

Pro: URANDOM не будет блокироваться. Con: URANDOM, если он оставлен без энтропии, подаст вам не очень-то-случайные данные.

Для криптографических целей, если вы действительно параноидны, я думаю, что URANDOM должно быть достаточно.

См. Эту страницу Ubuntu: http://manpages.ubuntu.com/manpages/jaunty/man4/random.4.html

Я (ошибочно) думал, что источники RANDOM управляемы пользователем, но, похоже, они не являются. По-видимому, на этом компьютере ничего особенного не происходит, так что генератор энтропии ядра не находит ничего, чтобы размалывать.

С положительной стороны, генератор URANDOM считается очень хорошим и рекомендуется практически для всего.

(Я редактирую некоторые предыдущие мои предложения, которые не сработают для вас, поскольку они потребуют, по крайней мере, перекомпиляции PHP).

Фактически оба / dev / random и / dev / urandom дают вам такую ​​же случайность и безопасность. Существует длинная история о том, как миф о / dev / random block и почему вы должны его использовать. Ищите «миф о случайных / урбандах»,