Может ли password_hash создать один и тот же хеш в разное время с одинаковыми параметрами? - PullRequest
0 голосов
/ 18 мая 2018

Я ПРЕДСТАВЛЯЮ, ЧТОБЫ СОЗДАТЬ УНИКАЛЬНОЕ СЛУЧАЙНОЕ ЗНАЧЕНИЕ.

Здравствуйте, я проверял функциональность password_hash, и мне нужно знать, возможно ли получить тот же результат, если вы используете те же параметры.

Например:

password_hash ('12345678', PASSWORD_BCRYPT, ['cost' => 13]) -> $ 2y $ 13 $ 8grJKASTBm87TU56QRGbTe7m4FHqis9xVYxBJ.1YL. / EgOvu0TP * 100 * * IG * 0 * * * * * * * * * * * * * * * * * * 100 * * * * * * * * * * * * * * * * * * 100 * * *"n" раз, возможно ли повторить тот же результат?или всегда будет изменять значение.

Если невозможно быть уверенным, что всегда будет по-другому, может ли эта модификация (добавление time ()) решить проблему получения всегда разных значений?

password_hash ('12345678'.time (), PASSWORD_BCRYPT, [' cost '=> 13]);

Все эти вопросы состояли в том, чтобы попытаться найти простой способ получения уникального «токена» без использования типичной системы (если это значение существует в bbdd, создайте другой), избегая слишком большого количества запросов.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

По умолчанию password_hash использует случайную 128-битную соль.Так что да, если вы повторите эту операцию 340 282 366 920 938 000 000 000 000 000 000 000 000 раз, вы обязательно увидите повторяющиеся результаты.На самом деле, это не то, о чем вам нужно беспокоиться (даже учитывая парадокс дня рождения ).

Добавление time() к исходному значению не является разумной идеей.Если вы также не записали время, используемое для каждого хэша, вы никогда бы не смогли надежно воссоздать входные данные, что лишило бы смысла его хеширование.

0 голосов
/ 18 мая 2018

password_hash добавит случайное значение соли .Уникальные значения соли приведут к уникальным хэшам с очень высокой вероятностью .Случайная соль будет взята из лучшего генератора случайных чисел, доступного в системе, поэтому вероятность ее уникальности равна очень очень высокая .

Нет, гарантии нет что соль будет уникальной или что хеш будет уникальным.Но крайне маловероятно для вас найти когда-либо дубликат, если вы не генерируете миллиарды хешей каждую секунду.

Если вы просто заинтересованы в уникальном токене , просто получите случайное число вместо того, чтобы злоупотреблять функциями хеширования паролей для чего-то, для чего они не были предназначены.Для этого желательно использовать random_bytes.

...