A MurmurHash2 egy egyszerű és gyors általános célú hash függvény , amelyet Austin Appleby fejlesztett ki. Nem titkosított , 32 bites előjel nélküli számot ad vissza.
A funkció előnyei között a szerzők megjegyezték az egyszerűséget, a jó eloszlást, az erőteljes lavinahatást , a nagy sebességet és a viszonylag nagy ütközésállóságot . Az algoritmus jelenlegi verziói Intel - kompatibilis processzorokhoz vannak optimalizálva.
A hash függvény második változatának van néhány hátránya. Ez különösen a kis húrokon való ütközések problémája. A javított verzió Merkle-Damgard típusú szerkezetű , kicsit lassabban fut (kb. 20%), de jobb statisztikát mutat.
#define mmix(h,k) { k *= m; k ^= k >> r; k*=m; h *= m; h ^= k; } unsigned int MurmurHash2A ( const void * kulcs , int len , unsigned int seed ) { const unsigned int m = 0x5bd1e995 ; const int r = 24 ; unsigned int l = len ; const unsigned char * data = ( const unsigned char * ) kulcs ; unsigned int h = mag ; unsigned int k ; míg ( len >= 4 ) { k = * ( unsigned int * ) adat ; mmix ( h , k ); adatok += 4 ; len -= 4 ; } előjel nélküli int t = 0 ; kapcsoló ( len ) { 3. eset : t ^= adat [ 2 ] << 16 ; 2. eset : t ^= adat [ 1 ] << 8 ; 1. eset : t ^= adat [ 0 ]; }; mmix ( h , t ); mmix ( h , l ); h ^= h >> 13 ; h *= m ; h ^= h >> 15 ; vissza h ; }Hash függvények | |
---|---|
Általános rendeltetésű | |
Kriptográfia | |
Kulcsgenerálási funkciók | |
Csekkszám ( összehasonlítás ) | |
Hashes |
|