Sto usando l'algoritmo djb2 per generare la chiave hash per una stringa che è la seguentedjb2 funzione hash
hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
Ora con ogni ciclo c'è una moltiplicazione con due grandi numeri, Dopo un po 'di tempo con il 4 ° del 5 ° carattere della stringa c'è un overflow di come il valore hash diventa enorme
Qual è il modo corretto di refactoring in modo che il valore hash non trabocchi e l'hashing avviene anche in modo corretto
Non esiste l'hash DJB2, c'è solo il DJB standard e poi Salsa20 et al. –
http://www.cse.yorku.ca/~oz/hash.html si riferisce a DJB2, credo che la terminologia sia ampiamente utilizzata, se non riconosciuta formalmente. – yoyo