URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8972
[ Назад ]

Исходное сообщение
"хеширование   ip"

Отправлено guest , 21-Дек-10 10:47 
Имеется некое количество (от едениц до 10ков тысяч) списков (singly-linked) таких структур:
struct subnet {
    struct sockaddr addr;
    u_int8_t mask;
    u_int8_t exclude;
}
по которым после некой обработки строятся rb-деревья.
Суть проблемы в том, что часть списков может быть абсолютно идентична (равное количество совпадающих адресов в одной и той же последовательности).
Посоветуйте какую-нибудь легкую хеш функцию для адресов.

Содержание

Сообщения в этом обсуждении
"хеширование   ip"
Отправлено mmmm , 21-Дек-10 10:56 
> Имеется некое количество (от едениц до 10ков тысяч) списков (singly-linked) таких структур:
> struct subnet {
>     struct sockaddr addr;
>     u_int8_t mask;
>     u_int8_t exclude;
> }
> по которым после некой обработки строятся rb-деревья.
> Суть проблемы в том, что часть списков может быть абсолютно идентична (равное
> количество совпадающих адресов в одной и той же последовательности).
> Посоветуйте какую-нибудь легкую хеш функцию для адресов.

CRC32


"хеширование   ip"
Отправлено guest , 21-Дек-10 11:25 
> CRC32

В чистом виде не катит для списков, а строить массив из них лишняя трата времени и главное памяти.


"хеширование   ip"
Отправлено Andrey Mitrofanov , 21-Дек-10 11:00 
http://google.ru/search?q=ipv4+address+hash

"хеширование   ip"
Отправлено guest , 21-Дек-10 11:19 
> http://google.ru/search?q=ipv4+address+hash

v4 лишнее)))
там может быть микс из v4/v6
Ну и уж извините, но ответ в стиле "выбирай сам" не очень интересен.


"хеширование   ip"
Отправлено mmmm , 21-Дек-10 11:31 
>> http://google.ru/search?q=ipv4+address+hash
> v4 лишнее)))
> там может быть микс из v4/v6
> Ну и уж извините, но ответ в стиле "выбирай сам" не очень
> интересен.

А md5 либо sha-1?
но по-моему они не такие и легковесные


"хеширование   ip"
Отправлено guest , 21-Дек-10 11:38 
> А md5 либо sha-1?
> но по-моему они не такие и легковесные

С ними тот же трабл, что и с crc. Это же все изначально блочные хэши.
Т.е. получаеться что я должен конвертировать список в массив (как минимум убрать указатели на следующий элемент).



"хеширование   ip"
Отправлено mmmm , 21-Дек-10 11:52 
>> А md5 либо sha-1?
>> но по-моему они не такие и легковесные
> С ними тот же трабл, что и с crc. Это же все
> изначально блочные хэши.
> Т.е. получаеться что я должен конвертировать список в массив (как минимум убрать
> указатели на следующий элемент).

Вот взгляните может это подойдет
http://ru.wikipedia.org/wiki/HMAC


"хеширование   ip"
Отправлено guest , 21-Дек-10 12:03 
> Вот взгляните может это подойдет
> http://ru.wikipedia.org/wiki/HMAC

Идея в том чтобы хешировать списки поэлементно используя в качестве ключа результат предыдущего хеширования?


"хеширование   ip"
Отправлено Andrey Mitrofanov , 21-Дек-10 11:53 
Да, на здоровье. Вопрос в стиле "выберите за меня" ещё менее.

"хеширование   ip"
Отправлено pavel_simple , 21-Дек-10 13:07 
> Имеется некое количество (от едениц до 10ков тысяч) списков (singly-linked) таких структур:
> struct subnet {
>     struct sockaddr addr;
>     u_int8_t mask;
>     u_int8_t exclude;
> }
> по которым после некой обработки строятся rb-деревья.
> Суть проблемы в том, что часть списков может быть абсолютно идентична (равное
> количество совпадающих адресов в одной и той же последовательности).
> Посоветуйте какую-нибудь легкую хеш функцию для адресов.

в линухах в ядре чаще всего используют jhash -- а вообще можно посмотреть сдесь -- http://www.azillionmonkeys.com/qed/hash.html и сдесь http://burtleburtle.net/bob/hash/doobs.html

хотя вопрос из разряда "сделайте мне заебись"


"хеширование   ip"
Отправлено guest , 21-Дек-10 13:41 
спс за ссылки, читаю, интересно.