28 Şubat 2017 Salı

Gömülü Proje - Hash

Giriş
Bu hash fonksiyonları kriptografik değildir! Dolasıyıla avalance effect göstermelerini beklememek gerekir.

DJB2, DJB2a, FNV-1,FNV-1a, Murmur2, MurmurHash3 gibi bir çok popüler hash fonksiyonu mevcut.

FNV1
FNV1 ve FNV1-a kodlaması çok basit hash metodları. 
FNV1-a aşağıdaki gibi. FNV1 ile tek farkı xor işleminin prime ile çarpılmasından önce yapılması.
hash = FNV_offset_basis
for each octetOfData to be hashed
    hash = hash xor octetOfData
    hash = hash * FNV_prime
return hash
FNV1 ve FNV1-a için sabitler aşağıda.
Hash Size    Prime                       Offset
===========  =========================== =================================
32-bit       16777619                    2166136261
64-bit       1099511628211               14695981039346656037
Murmur3
Şöyle yaparız.
uint64_t MurmurHash3Mixer( uint64_t key ) { 
  key ^= (key >> 33);
  key *= 0xff51afd7ed558ccd;
  key ^= (key >> 33);
  key *= 0xc4ceb9fe1a85ec53;
  key ^= (key >> 33);

  return key;
}

Hiç yorum yok:

Yorum Gönder