Re: BSD license compatible hash algorithm?



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ivan Voras wrote:
Garrett Cooper wrote:

Looks promising, but how difficult would it be to port the code
to other platforms (Win32 for instance?).

The hash algorithm itself as implemented in hash.h is pretty much a
text-book hash algorithm (D.J.Bernstein's):

#ifndef HASHINIT
#define HASHINIT 5381
#define HASHSTEP(x,c) (((x << 5) + x) + (c))
#endif

/*
* Return a 32-bit hash of the given buffer. The init
* value should be 0, or the previous hash value to extend
* the previous hash.
*/
static __inline uint32_t
hash32_buf(const void *buf, size_t len, uint32_t hash)
{
const unsigned char *p = buf;

while (len--)
hash = HASHSTEP(hash, *p++);

return hash;
}

It apparently has some weaknesses if used on binary (non-text) data
but I don't see why it wouldn't work on Windows.

All hashs have issues with pooling.... see
http://www.burtleburtle.net/bob/hash/index.html... btw it is a old
wives tale that the number of buckets should be prime (mostly based on
the very weak implementation Knuth offered)

- --
Aryeh M. Friedman
FloSoft Systems
http://www.flosoft-systems.com
Developer, not business, friendly
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.4 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHdO8mzIOMjAek4JIRApb6AJ93JNR1sIPg6mH4TrOCEUn2jfdinwCeI/UO
IQLG9bX1N5PHxsSALDS7dzw=
=saZk
-----END PGP SIGNATURE-----

_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"



Relevant Pages