Модераторы: 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   Вверх
Diesel Draft
Дата 13.8.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



microtime() - уникальность в 1 миллисекунду на 1 помпе


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
sTa1kEr
Дата 13.8.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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

Можете смело использовать в качестве имен файлов конструкцию uniqid(rand(), true); Если есть сомнения в уникальности, то запустите простенький скрипт (потребуется много памяти)
Код

$uniq = array();
for ($i = 0; $i < 1000000; $i++)
{
   $uniq[] = uniqid(rand(), true);
}
echo count(array_unique($uniq)); // 1000000

Т.е. 1000000 значений, генерированных за ~10 секунд полностью уникальны. В реальной же ситуации вряд-ли будет создаваться  больше 1000000 файлов за 10 секунд, т.ч. можно пользоваться этой функцией не опасаясь повторений.
PM MAIL   Вверх
Diesel Draft
Дата 13.8.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



Кстати есть стандартная функция генерации уникального имени файла. 


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
sTa1kEr
Дата 13.8.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Diesel Draft @  13.8.2007,  14:29 Найти цитируемый пост)
Кстати есть стандартная функция генерации уникального имени файла.  

Если вы про tempnam(), то она не имя файла генерирует, а создает файл с уникальным именем. Эта функция предназначена для создания временных файлов и при работе с постоянными файлами, могут возникнуть некоторые казусы, на пример, файл создастся во временной директории.
PM MAIL   Вверх
sergejzr
Дата 13.8.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(Diesel Draft @  13.8.2007,  13:29 Найти цитируемый пост)
Кстати есть стандартная функция генерации уникального имени файла. 

есть string tempnam ( string dir, string prefix ) но про его уникальность ничего не знаю :( ..


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


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


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

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



Спасибо!
понятно, автоинкримент - самый надёжный способ  smile 

Это сообщение отредактировал(а) HackMan - 14.8.2007, 01:39


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

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

user posted image

user posted image
PM MAIL ICQ   Вверх
Diesel Draft
Дата 14.8.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



HackMan, +1
И не говори, а они что то новое хотят smile 


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
HackMan
Дата 14.8.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Просто есть такое понятие, как "закон подлости"  smile 
У меня может ни разу не совпасть md5, а у заказчика 10 одинаковых значений подряд будет  smile 


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

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

user posted image

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


Добрый кот
***


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

Репутация: 10
Всего: 38



HackMan
Ну попользуйте SHA1, если опасаетесь... можно ещё какую-нибудь случайность влепить в параметр вроде рандомно генерящегося int-а...

Это сообщение отредактировал(а) SamDark - 14.8.2007, 17:04


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Diesel Draft
Дата 14.8.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



Влепи дату + час (час, минута, секунда, миллисекунда) + пользователь. Уникальность гарантирую. И не надо хешировать.


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
SamDark
Дата 14.8.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


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

Репутация: 10
Всего: 38



Diesel Draft
Всё-равно обрабатывать надо. Это же для имени файла...


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Diesel Draft
Дата 14.8.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



В таком случае в Base64. Принайми я вот так вчера сделал з кеш. У меня там два метода:
Код

static function Get($name, $key=array())
static function Set($name, $value, $key=array(), $life=null){


Вот так вот создаю имя:
Код

$file = Conf::$CacheDirPath  . base64_encode($name) . '.txt';
file_put_contents($file, $text);


Это сообщение отредактировал(а) Diesel Draft - 14.8.2007, 18:01


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
sergejzr
Дата 14.8.2007, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



В Base64 возможен знак равно.


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



Да, в конце. Это разве плохо? у меня работает з ним нормально.


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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