Случай использования: кнопка "Я забыл пароль". Мы не можем найти оригинальный пароль пользователя, потому что он хранится в хэшированной форме, поэтому единственное, что нужно сделать - это создать новый случайный пароль и отправить ему по электронной почте. Для этого требуются криптографически непредсказуемые случайные числа, для которых mt_rand недостаточно хорош, и в целом мы не можем предположить, что служба хостинга предоставит доступ к операционной системе для установки криптографического модуля случайных чисел и т.д., Поэтому я ищу способ для генерации безопасных случайных чисел в самом PHP.
Решение, которое я придумал до сих пор, включает в себя сохранение начального семени, затем для каждого вызова
result = seed
seed = sha512(seed . mt_rand())
Это основано на безопасности хэш-функции sha512 (вызов mt_rand только для того, чтобы сделать жизнь немного сложнее для противника, который получает копию базы данных).
Я что-то упустил или есть более известные решения?