What is Ruby's hash function algorithm?
The standard Ruby implementation uses the Murmur hash for some types (integer, string)
From string.c:1901:
/* MurmurHash described in http://murmurhash.googlepages.com/ */
static unsigned int
hash(const unsigned char * data, int len, unsigned int h)
(note that this function seems to be renamed to st_hash
in the SVN trunk)
Search for rb_memhash
in the source code if you want to know where it gets used. I have used the Murmur2 hash in an own project before, it is very fast and has good cryptographic properties (but not good enough to be used as cryptographic hash function).
精彩评论