Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите простую хэш-функцию
 
 автор: SHAman   (13.03.2008 в 21:29)   письмо автору
 
 

Господа пхпшники, подскажите простую хэш-функцию.

Требования: принимает что угодно, возвращает ЧИСЛО. И только число. Никаких букв или спецсимволов. Есть ли такое вообще?

   
 
 автор: Nemezis   (13.03.2008 в 21:38)   письмо автору
 
   для: SHAman   (13.03.2008 в 21:29)
 

Может тогда просто метку времени брать?

   
 
 автор: SHAman   (13.03.2008 в 21:46)   письмо автору
 
   для: Nemezis   (13.03.2008 в 21:38)
 

Нужна именно хэш-функция. Или алгоритм, хотя бы название.

Дана строка. Нужно перевести ее в число так, чтобы свести вероятность совпадения чисел у двух разных строк к пренебрежимо малой величине.

Можно было б брать коды символов, но для этого придется лопатить слово как массив, а это долго и не красиво. Хочу красивую функцию)

   
 
 автор: Max Vasin   (14.03.2008 в 01:07)   письмо автору
 
   для: SHAman   (13.03.2008 в 21:46)
 

то что сразу в голову пришло

$fr=md5("testtest");
echo hexdec(substr($fr, 1, 5));


или это не то?:)
----
Regards, Max Vasin.

   
 
 автор: Петр   (14.03.2008 в 06:14)   письмо автору
 
   для: Max Vasin   (14.03.2008 в 01:07)
 

Хэш числовой? Коллизии будут на каждой второй строке!
Если у MD5 который возвращает 32 символа часто бывают совпадения, то что говорить о только цифрах. Еще и размер (кол-во символов) не определен, нужно определять как строку и делать длину 256-512 символов, а если как число определять, то это никуда не сгодится

   
 
 автор: SHAman   (14.03.2008 в 09:52)   письмо автору
 
   для: Петр   (14.03.2008 в 06:14)
 

Да, подумал, и понял, что нереально вот так просто, без коллизий закодировать строку числом. Что ж, придется юзать ord.

Всем спасибо.

   
 
 автор: Саня   (14.03.2008 в 11:11)   письмо автору
 
   для: SHAman   (14.03.2008 в 09:52)
 

Кхм, md5 как раз и представляет собой 128-битное шестнадцатиричное число. А шанс выпадения коллизии настолько мал, что и говорить о нём как-то не очень прилично. "Всего-то" нужно перебрать 2^128 вариантов, чтобы гарантированно найти коллизию.

   
 
 автор: Eugene77   (14.03.2008 в 18:57)   письмо автору
 
   для: SHAman   (13.03.2008 в 21:29)
 

А чем вам не угодила
crc32
?

   
 
 автор: SHAman   (14.03.2008 в 19:21)   письмо автору
 
   для: Eugene77   (14.03.2008 в 18:57)
 

Вот. Спасибо большое. То, что надо!

   
 
 автор: mihdan   (14.03.2008 в 19:09)   письмо автору
 
   для: SHAman   (13.03.2008 в 21:29)
 

md5(), CRC32(), crypt(), ....

   
 
 автор: SHAman   (14.03.2008 в 19:22)   письмо автору
 
   для: mihdan   (14.03.2008 в 19:09)
 

мд5 и крипт не подходят, ибо, как я говорил, на выходе должны быть только цифры.

   
 
 автор: Max Vasin   (14.03.2008 в 23:52)   письмо автору
 
   для: SHAman   (14.03.2008 в 19:22)
 

Со всем уважением, а разве md5 не цифры выводит? Вывод просто в 16СС происходит:), я ж выше указал пример, можно было б и посмотреть;)

----
Regards, Max Vasin.

   
 
 автор: SHAman   (15.03.2008 в 01:39)   письмо автору
 
   для: Max Vasin   (14.03.2008 в 23:52)
 

Да, тупанул, простите.

   
 
 автор: Wunderbar   (15.03.2008 в 12:00)
 
   для: mihdan   (14.03.2008 в 19:09)
 

mihdan, CRC32 создан для вычисления хеша строки, которая не была специально изменена каким-то образом, а могла быть случайно повреждена.

   
 
 автор: mihdan   (16.03.2008 в 19:56)   письмо автору
 
   для: Wunderbar   (15.03.2008 в 12:00)
 

Да ладно )) А мы и не знали! )))

   
 
 автор: Wunderbar   (16.03.2008 в 20:08)
 
   для: mihdan   (16.03.2008 в 19:56)
 

Именно так.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования