estoy usando el algoritmo djb2 para generar la clave hash para una cadena que es el siguientedjb2 función hash
hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
return hash;
}
Ahora con cada bucle existe una multiplicación de dos números grandes, después de algún tiempo con el cuarto del quinto carácter de la cadena hay un desbordamiento como el valor hash se pone muy grande
¿Cuál es la forma correcta de refactorizar para que el valor hash no se desborde y el hash también pasa correctamente
No existe el hash DJB2, existe el único DJB estándar, y luego Salsa20 et al. –
http://www.cse.yorku.ca/~oz/hash.html se refiere a DJB2, creo que la terminología es ampliamente utilizada, si no formalmente reconocida. – yoyo