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