Подтвердить что ты не робот

Как загружается PHP mt_rand?

Я знаю, что PHP mt_rand() не должен использоваться для целей безопасности, поскольку его результаты не являются криптографически сильными. Тем не менее, много PHP-кода делает это или использует его как резерв, если лучшие источники случайности недоступны.

Так как это плохо? Какие источники случайности используют mt_rand для посева? Существуют ли другие проблемы безопасности с mt_rand для криптографических приложений?

4b9b3361

Ответ 1

В PHP 5.4, если mt_rand автоматически высевается при первом использовании (источник PHP). начальное значение является функцией текущей метки времени, ПИД-процесса процесса PHP и значения, созданного внутренним PHP LCG. Я не проверял источник для предыдущих версий PHP, но документация подразумевает, что этот алгоритм сеяния использовался начиная с PHP 5.2. 1.

Алгоритм RNG за mt_rand является Mersenne Twister. На самом деле не имеет смысла говорить о том, "насколько это плохо", потому что он явно задокументирован (а не на странице документов PHP, к сожалению), что он полностью непригоден для криптографических приложений. Если вам нужна криптопрочность, используйте задокументированный генератор криптопрочности.

Обновление: Вы также можете посмотреть этот вопрос на crypto.SE.