Я предлагаю djb2 из Хеш-функции
djb2
этот алгоритм (k = 33) был впервые представлен Даном Бернштейноммного лет назад в comp.lang.c.другая версия этого алгоритма (теперь одобренная Бернштейном) использует xor: hash(i) = hash(i - 1) * 33 ^ str[i]
;магия числа 33 (почему она работает лучше, чем многие другие константы, простые или нет) никогда не была адекватно объяснена.
unsigned long hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
Также представляет интерес
реализация lose lose
из цитируемой оригинальной книги K & R.Хороший пример как не для хэширования вашей строки.