Articulo de referencia

Función hash PJW

La función hash PJW es una función hash no criptográfica creada por Peter J. Weinberger de AT&T Bell Labs. Otras versiones Se ha utilizado una variante del hash PJW para crear e...

La función hash PJW es una función hash no criptográfica creada por Peter J. Weinberger de AT&T Bell Labs.

Otras versiones

Se ha utilizado una variante del hash PJW para crear el 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 más tarde admitió 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]

El algoritmo PJW_hash(s) es
    unidad h := 0
    bits := uint tamaño 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 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 ( * s ) { h = ( h << 4 ) + * s ++ ; si ( alto = h & 0xF0000000 ) h ^= alto >> 24 ; h &= ~ alto ; } devolver h ; }     

           
     
    
              
             
                
          
    
     

Este código C asume incorrectamente que longse trata de un tipo de datos de 32 bits. Cuando longes más amplio que 32 bits, como ocurre en muchos sistemas de 64 bits , el código contiene un error. [4]

Véase también

Funciones hash no criptográficas

Referencias

  1. ^ Binstock, Andrew (1996). "Rehashed de Hashing". Dr. Dobb's .
  2. ^ "Funciones hash". www.cs.hmc.edu . Consultado el 10 de junio de 2015 .
  3. ^ CORPORATE UNIX Press (1993). Interfaz binaria de aplicación del sistema V. ISBN 0-13-100439-5.
  4. ^ "La función hash ELF puede desbordarse". 12 de abril de 2023. Consultado el 14 de abril de 2023 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Función_hash_PJW&oldid=1253333688"