# Re: [mu ComputerScience] hash functions

From: Tom Poindexter (tpoindex@nyx.net)
Date: Sat Mar 18 2000 - 21:02:35 CET

On Sat, Mar 18, 2000 at 06:10:23PM +0100, Michele Andreoli wrote:
>
> I'm interested to hash algoritms and so on. Please, anyone know
> an URL suitable to this kind of lecture?

I don't know of a single page, but you can find many by searching Google,
Altavista, etc. Here are a few:

There's also quite a bit of discussion of hashes in crypto research,
notable, SHA (secure hash algorithm) and MD5. Note that my Tcl Add-on
floppy for muLinux has an implementation of MD5.

I also like this comment from the Tcl source code (tclHash.c):
/*
* I tried a zillion different hash functions and asked many other
* all different, but no-one had much idea why they were good ones.
* I chose the one below (multiply by 9 and add new character)
* because of the following reasons:
*
* 1. Multiplying by 10 is perfect for keys that are decimal strings,
* and multiplying by 9 is just about as good.
* 2. Times-9 is (shift-left-3) plus (old). This means that each
* character's bits hang around in the low-order bits of the
* hash value for ever, plus they spread fairly rapidly up to
* the high-order bits to fill out the hash value. This seems
* works well both for decimal and non-decimal strings.
*/

and the actual code is:

static unsigned int
HashString(string)
register CONST char *string;/* String from which to compute hash value. */
{
register unsigned int result;
register int c;
result = 0;
while (1) {
c = *string;
string++;
if (c == 0) {
break;
}
result += (result<<3) + c;
}
return result;
}

```--
Tom Poindexter
tpoindex@nyx.net
http://www.nyx.net/~tpoindex/
---------------------------------------------------------------------
To unsubscribe, e-mail: mulinux-unsubscribe@sunsite.auc.dk