PJW hash funkce - PJW hash function - Wikipedia
PJW hash funkce je ne kryptografický hashovací funkce vytvořil Peter J. Weinberger laboratoří AT&T Bell.
Jiné verze
Varianta hash PJW byla použita k vytvoření hash ElfHash nebo Elf64, který se používá v souborech objektů Unix s ELF formát.
Allen Holub vytvořil přenosnou verzi hashového algoritmu PJW, která měla chybu a skončila v několika učebnicích, jak autor jedné z těchto učebnic později připustil.[1]
Algoritmus
Algoritmus hash PJW zahrnuje posunutí předchozího hash a přidání aktuálního bajtu následované přesunutím vysokých bitů:[2]
algoritmus PJW_hash (s) je uint h: = 0 bitů: = velikost uint v bitech pro i: = 1 až | S | dělat h: = h << bitů / 8 + s [i] vysoký: = získat horní bitů / 8 bitů h zleva -li vysoká ≠ 0 pak h: = h xor (vysoká >> bity * 3/4) h: = h & ~ vysoká vrátit se h
Implementace
Níže je implementace algoritmu používaného ve formátu Unix ELF:[3]
nepodepsaný dlouho ElfHash(konst nepodepsaný char *s){ nepodepsaný dlouho h = 0, vysoký; zatímco (*s) { h = (h << 4) + *s++; -li (vysoký = h & 0xF0000000) h ^= vysoký >> 24; h &= ~vysoký; } vrátit se h;}
Viz také
Nekryptografické hashovací funkce
Reference
- ^ Binstock, Andrew (1996). „Hashing Rehashed“. Dr. Dobb.
- ^ „Hašovací funkce“. www.cs.hmc.edu. Citováno 2015-06-10.
- ^ CORPORATE UNIX Stiskněte. Binární rozhraní aplikace System V. ISBN 0-13-100439-5.