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

Форум PHP

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

 

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

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

тема: Посоветуйте хэш-функцию
 
 автор: Meh   (30.03.2010 в 22:41)   письмо автору
 
 

Господа, посоветуйте алгоритм (или готовую) хэш-функции, чтоб результатом был набор десятичных чисел с заданным количеством разрядов.

Например, fn('Мама мыла раму', 10) = '8305832011'

  Ответить  
 
 автор: Trianon   (30.03.2010 в 23:34)   письмо автору
 
   для: Meh   (30.03.2010 в 22:41)
 

1. почему набор, а не одно число заданной разрядности?
2. в каком диапазоне второй параметр?
То есть насколько много разрядов есть необходимость получать?

  Ответить  
 
 автор: Meh   (31.03.2010 в 00:14)   письмо автору
 
   для: Trianon   (30.03.2010 в 23:34)
 

1. Сорри, конечно же число с заданной разрядностью.

2. Хэшируемая строка может иметь от 1 до 20 знаков. Длина хэша - от 8 до 16 разрядов.
При эксплуатации количество разрядов будет всегда одинаковым. Просто сейчас нужно понять (подобрать) оптимальную длину хэша.

Сейчас экспериментирую с php-функцией crc32() и MySQL-функцией CRC32().

  Ответить  
 
 автор: Trianon   (31.03.2010 в 00:25)   письмо автору
 
   для: Meh   (31.03.2010 в 00:14)
 

crc32 больше 32 двоичных (и соответственно [32 lg 2] = 9 десятичных разрядов Вам не даст.

Более емкие хеши md5() и sha1() имеют разрядность 128 и 160 бит соответственно. Но вычисляются существенно медленнее.

Впрочем Вы можете вычислить два хеша CRC32 для прямой строки и для строки с обратным порядком байт. Получите как раз 9+9 = 18 разрядов.

Ну а взять нужное число цифр - substr() в помощь. Или MIDDLE()

  Ответить  
 
 автор: Meh   (31.03.2010 в 00:28)   письмо автору
 
   для: Trianon   (31.03.2010 в 00:25)
 

>Впрочем Вы можете вычислить два хеша CRC32 для прямой строки и для строки с обратным порядком байт. Получите как раз 9+9 = 18 разрядов.

Собственно, до этого я и дошёл.
Спасибо за поддержку.

  Ответить  
 
 автор: Тень&   (31.03.2010 в 00:36)   письмо автору
 
   для: Meh   (30.03.2010 в 22:41)
 

А где это нужно?

  Ответить  
Rambler's Top100
вверх

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