Насколько легко uniqid () с большей энтропией создаст дубликат?

Это может быть не по теме, но я надеюсь, что кто-то может ответить на этот вопрос.

За сколько наносекунд, миллисекунд или секунд uniqid () с большей энтропией рискует создать дубликат?

Со ссылкой на ссылку ниже, uniqid будет конфликтовать, если два идентификатора будут созданы за одну миллисекунду. А как насчет энтропии?

(Моя цель — использовать небольшую индексируемую буквенно-цифровую строку в качестве идентификатора документа при создании, которая может быть создана быстро с минимальной мощностью процессора без вмешательства дБ.)

Ответы здесь не дают точного числа:
Насколько уникален уникальный?

1

Решение

От исходный код, more_entropy добавляет девять случайных десятичных цифр, так что вы можете ожидать столкновения после примерно 37 000 вызовов. (Как миллиард превратился в 37 000, см. нападение на день рождения.) Это, конечно, игнорирует тот факт, что эти цифры на самом деле не случайны, а генерируются LCG, и тот же LCG, вероятно, используется в других местах в коде, поэтому реальная вероятность столкновения, вероятно, выше (насколько точно, я понятия не имею).

Также стоит отметить, что uniqid фактически не гарантирует микросекундное разрешение, так как некоторые реализации PHP (в частности, Windows) не имеют доступа к часам с точностью до микросекунды.

Короче говоря, если вам нужен уникальный идентификатор для чего-либо чувствительного к безопасности, или коллизии дорогостоящие, избегайте uniqid, В противном случае, используя его с more_entropy это, вероятно, хорошо (хотя общая схема заключается в использовании uniqid(mt_rand(), true) добавить еще больше энтропии).

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]