2012-06-25 4 views
1

Есть ли какая-либо функция php в наше время, которая генерирует абсолютно уникальную случайную строку? Или перефразируйте вопрос, как сделать абсолютно уникальную и случайную строку в php в наше время? Достаточно ли совместить пару случайных функций?PHP Абсолютно уникальная случайная строка

+0

Возможный дубликат [Истинное генерирование случайных чисел] (http://stackoverflow.com/questions/3996338/true-random-number-generation) –

+1

Это не столько связано с PHP, сколько с вопросом программа может генерировать по-настоящему случайную строку. Он не может (поскольку все случайные генераторы основаны на некотором алгоритме и поэтому детерминированы). Из-за этого все программные реализации случайных генераторов называются псевдослучайными (числовыми) генераторами (PRNG). Посмотрите ссылку @MichaelPetrotta для получения дополнительной информации. – Joris

+0

Joris, есть криптографически безопасные PRNG. Вы можете безопасно их использовать. – Joey

ответ

7

Просто, чтобы быть nitpicky ... Если он должен быть уникальным, то это не действительно «случайный». Случайность включает в себя возможность дублирования, поскольку создание случайного состояния не зависит от (или ссылается) предыдущих состояний.

Вы хотите создать GUID? PHP имеет несколько методов для генерации случайных идентификаторов:

Некоторые другие люди также found ways to do this, кажется.

+1

Что касается вашей последней ссылки: я бы с осторожностью относился к ресурсу, который вызывает шифрование MD5 ... Вариант 4 совершенно ужасен, не следуя ни с версией 4, ни с 5-ю версиями GUID. На самом деле, это всего лишь хеш MD5, чтобы он выглядел как GUID. – Joey

+2

@Joey: Определенно хорошая точка. Он был найден в Google и, похоже, является хорошей отправной точкой для дальнейших исследований. – David

+0

@All: Насколько это хорошо, как генератор случайных строк для паролей? '$ str_password = str_shuffle ('abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 @ #% $ *'); \t \t return substr ($ str_password, 0, $ int_password_length); ' – verisimilitude