Уникальная функция PHP с большей энтропией

1

Вопрос:

При использовании функции PHP uniqid с большим количеством энтропии, 15-й символ всегда является периодом (точкой) в моих прогонах. Является ли 15-й символ гарантией всегда быть точкой?

Следовать за:

Спасибо @FuzzyTree за ответ.

Я также изучил немного дальше, поэтому для тех, кого интересует функция php_combined_lcg(), генерируется случайное число от 0 до 1 (например, 0,862215793). Причина в том, что перед десятичным числом есть число, потому что оно умножается на 10 (что в этом примере становится 8.62215793). Это предотвращает наличие всегда 0 в качестве 14-го символа.

Теги:
unique

1 ответ

2
Лучший ответ

Да, 15-й символ гарантированно будет точкой, если для параметра more_entropy установлено значение true.

Из источника php для uniqid

if (more_entropy) {
    uniqid = strpprintf(0, "%s%08x%05x%.8F", prefix, sec, usec, php_combined_lcg() * 10);
                                       ^ hard coded dot here preceeded by 14 characters
} else {
    uniqid = strpprintf(0, "%s%08x%05x", prefix, sec, usec);
}
  • 0
    здорово достать источник, когда документы не доставили :)
  • 0
    @kojow 5 символов перед десятичной дробью генерируются из отметки времени, содержащей микросекунды

Ещё вопросы

Сообщество Overcoder
Наверх
Меню