Вопрос:
При использовании функции PHP uniqid с большим количеством энтропии, 15-й символ всегда является периодом (точкой) в моих прогонах. Является ли 15-й символ гарантией всегда быть точкой?
Следовать за:
Спасибо @FuzzyTree за ответ.
Я также изучил немного дальше, поэтому для тех, кого интересует функция php_combined_lcg(), генерируется случайное число от 0 до 1 (например, 0,862215793). Причина в том, что перед десятичным числом есть число, потому что оно умножается на 10 (что в этом примере становится 8.62215793). Это предотвращает наличие всегда 0 в качестве 14-го символа.
Да, 15-й символ гарантированно будет точкой, если для параметра more_entropy
установлено значение true.
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);
}