Funkcja skrótu PJW
Funkcja skrótu PJW to niekryptograficzna funkcja skrótu stworzona przez Petera J. Weinbergera z AT&T Bell Labs.
Inne wersje
Wariant skrótu PJW został użyty do stworzenia skrótu ElfHash lub Elf64, który jest używany w obiektowych plikach Unix w formacie ELF .
Allen Holub stworzył przenośną wersję algorytmu mieszającego PJW, który miał błąd i trafił do kilku podręczników, jak później przyznał autor jednego z tych podręczników.
Algorytm
Algorytm skrótu PJW polega na przesunięciu poprzedniego skrótu i dodaniu bieżącego bajtu, a następnie przeniesieniu wysokich bitów:
algorytm PJW_hash(s) to uint h := 0 bitów := uint rozmiar w bitach dla i := 1 do |S| do h := h << bity/8 + s[i] high := pobierz górne bity/8 bitów h od lewej jeśli high ≠ 0 to h := h xor (high >> bits * 3/4) h : = h & ~wysoka stopa zwrotu h
Realizacja
Poniżej znajduje się implementacja algorytmu zastosowana w formacie Unix ELF:
0
unsigned long ElfHash ( const unsigned char * s ) { unsigned long h = , high ; podczas gdy ( * s ) { godz = ( godz << 4 ) + * s ++ ; if ( wysoki = h & 0xF0000000 ) h ^= wysoki
>> 24 ; h &= ~ wysoka ; } powrót h ; }
Zobacz też
Niekryptograficzne funkcje skrótu
Kategoria: