Я хочу создать генератор токенов, который генерирует токены, которые не могут быть угаданы пользователем и которые по-прежнему уникальны (используется для сброса пароля и кодов подтверждения).
Я часто вижу этот код; это имеет смысл?
md5(uniqid(rand(), true));
Согласно комментарий uniqid($prefix, $moreEntopy = true)
дает
первые 8 шестнадцатеричных символов = Unixtime, последние 5 шестнадцатеричных символов = микросекунды.
Я не знаю, как обрабатывается $prefix
-параметр.
Итак, если вы не устанавливаете флаг $moreEntopy в значение true, он дает прогнозируемый результат.
ВОПРОС: Но если мы используем uniqid
с $moreEntopy
, что хеширует его при покупке md5? Это лучше, чем:
md5(mt_rand())
edit1: Я буду хранить этот токен в столбце базы данных с уникальным индексом, поэтому я буду определять столбцы. Может представлять интерес/