Date: Fri, 28 Dec 2007 13:35:43 +0100 From: Ivan Voras <ivoras@freebsd.org> To: freebsd-hackers@freebsd.org Subject: Re: BSD license compatible hash algorithm? Message-ID: <fl2qiv$qoh$1@ger.gmane.org> In-Reply-To: <B8D4C3C6-B867-4550-9F17-4DC6930D10E2@u.washington.edu> References: <5950EE0C-383D-4D6B-9991-A0DEABD2ADE4@u.washington.edu> <20071228003716.GB48997@lor.one-eyed-alien.net> <B8D4C3C6-B867-4550-9F17-4DC6930D10E2@u.washington.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?fl2qiv$qoh$1>