PJW función hash es un no criptográfica función hash creado por Peter J. Weinberger de AT & T Bell Labs.
Otras versiones
Se ha utilizado una variante de hash PJW para crear hash ElfHash o Elf64 que se utiliza en archivos de objetos Unix con formato ELF .
Allen Holub ha creado una versión portátil del algoritmo hash PJW que tenía un error y terminó en varios libros de texto, como admitió más tarde el autor de uno de estos libros de texto. [1]
Algoritmo
El algoritmo hash PJW implica cambiar el hash anterior y agregar el byte actual seguido de mover los bits altos: [2]
algoritmo PJW_hash (s) es uint h: = 0 bits: = tamaño de uint en bits para i: = 1 a | S | hacer h: = h << bits / 8 + s [i] alto: = obtener los bits superiores / 8 bits de h desde la izquierda si es alto ≠ 0 entonces h: = h xor (alto >> bits * 3/4) h: = h & ~ alto volver h
Implementación
A continuación se muestra la implementación del algoritmo utilizado en formato ELF de Unix: [3]
unsigned long ElfHash ( const unsigned char * s ) { unsigned long h = 0 , alto ; mientras que ( * s ) { h = ( h << 4 ) + * s ++ ; if ( alto = h & 0xF0000000 ) h ^ = alto >> 24 ; h & = ~ alto ; } return h ; }
Ver también
Referencias
- ^ Binstock, Andrew (1996). "Hashing Rehashed" . Dr. Dobb's .
- ^ "Funciones hash" . www.cs.hmc.edu . Consultado el 10 de junio de 2015 .
- ^ Prensa CORPORATIVA UNIX (1993). Aplicación System V interfaz binaria . ISBN 0-13-100439-5.