Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> md5(microtime()), насколько уникальное значение? 
:(
    Опции темы
HackMan
Дата 11.8.2007, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



топик


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
Daevaorn
Дата 11.8.2007, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



Настолько, насколко уникален хеш от неповторяющихся занчений числа(если конечно время не подкручиватьsmile).
PM MAIL WWW   Вверх
HackMan
Дата 11.8.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



то есть можно смело использовать эту конструкцию для генерации имён файлов, которые складируются в одну папку и не бояться возможности остаться без какого-то файла?


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
sTa1kEr
Дата 11.8.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Лучше использовать uniqid(). Он генерирует уникальные значения так же с использованием микровремени, но значение более уникальным получается.
Код

$hash = md5(uniqid(rand(), true));

PM MAIL   Вверх
sergejzr
Дата 11.8.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 5
Всего: 360



Цитата(HackMan @  11.8.2007,  10:00 Найти цитируемый пост)
то есть можно смело использовать эту конструкцию для генерации имён файлов

Смело - нельзя. Вероятность совпадения всё равно есть. 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Garret
Дата 11.8.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 16.9.2006
Где: Киев

Репутация: нет
Всего: 2



Если файлов не пара миллионов то вероятность совпадения мизерная.
PM MAIL WWW ICQ   Вверх
HackMan
Дата 11.8.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



а можете привести две даты, md5 hash которых будет идентичен?  smile 


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
sergejzr
Дата 11.8.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 5
Всего: 360



Честно сказать, нет ни желания, ни возможности. В криптографии такое называется "birthday attack". Вероятность, что в группе людей найдётся человек у которого день рождения совпадает с твоим мыла, но вероятность того, что в этой группе есть два человека с одинаковым ДР - достаточна велика. т.е вероятность, что найдёшь число дающее заданный хэш мала, но найти два, которые дают любой одинаковый - значительно больше. хэш у нас 128 бит, значит 2^128 различных значений, значит за 2^129 секунд у тебя будет в среднем "пропадёт" половина файлов.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Mal Hack
Дата 11.8.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Значений md5 - 16^16, если не изменяет память.
Значений microtime сосчитать практически нереально, т.к. дробна часть может быть разной (где-то 10^10 также) для 10^10 значений микротайм до текущей даты (приблизительно). 
Так что вероятность - считай-те сами. Вероятность повтора ничтожна мала, учитывая принципы статистики, это даже под закон больших чисел не подпадает, так что 0.
PM ICQ   Вверх
HackMan
Дата 12.8.2007, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



а насколько уникально uniqid()? можно ли его без опасения использовать для имён файлов?  smile 


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
BuShaRt
Дата 12.8.2007, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Mal Hack
Разве есть разница, какие аргументы переданны md5? На сколько я понимаю, разницы не какой в том плане, что если значений md5 - 16^16, то оно и будет 16^16, какие бы значения через него не пропускали.

И того 18 446 744 073 709 551 616 комбинаций. Да вероятность совпадения ничтожно мала, но я считаю, что тут в целом задействован тот же принцип рандома, а на сколько коварен рандом знает наверно каждый, кто с ним пробывал хотя бы раз работать...

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

Добавлено через 2 минуты и 27 секунд
 smile 
Если бы рескнули играть в русскую рулетку из револьвера с 18 446 744 073 709 551 615 пустыми ячейками и 1 полной, то используйте этот метод, я бы не извращался и сэмулировал AUTO_INCREMENT.
PM MAIL   Вверх
Mal Hack
Дата 12.8.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(BuShaRt @  12.8.2007,  00:44 Найти цитируемый пост)
Разве есть разница, какие аргументы переданны md5?

Разницы, конечно, нет. Я имею ввиду то, что возможных параметров для md5 может быть больше чем число возможных результатов выполнения функции. Т.е. фактически это как выливание воды из ведра, когда оно заполнено, а ты туда льешь.

Цитата(HackMan @  12.8.2007,  00:35 Найти цитируемый пост)
а насколько уникально uniqid()?

а какая разница, через md5 жу пропускать будешь, то все равно теже 16^16.

PM ICQ   Вверх
HackMan
Дата 12.8.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: 8
Всего: 9



нет, а если не через md5() пропускать, насколько уникально uniqid()?


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
smartov
Дата 12.8.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



HackMan, если файлы не будут создаваться чаще, чем раз в секунду (или будет применена блокировка, чтобы такого не произошло) то для имени файла вполне подойдет date().
PM MAIL   Вверх
sergejzr
Дата 12.8.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 5
Всего: 360



лана smile Лично я делаю: дата."_".мд5(имя_файла);
Это убивает практически любую коллизию, потому что для коллизии необходимо, чтобы две строки одновременно дали один хэш. Ну это может произойти только если файлы одинаковы, а это нам даже пофиг. Конечно вероятность коллизии и тут нулю не равна, но значительно меньше чем у просто мд5. Для уникальности можно ИП клиента присобачить, и/или его ник. Тогда уж точно пересечений не будет.

а uniqueid базируется на времени, точнее на миллисекундах. Именно поэтому в функцию рекомендуется передавать доп. аргумент-prefix.


Дело не в том, что мд5 плохой, а в том, что надо себе отчёт отдавать, что от коллизий никто не застрахован.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0875 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.