¿Por qué la mayoría de las funciones de hashing producen hashes que tienen caracteres a-f 0-9?

6

Esto es algo que nunca entendí acerca de las funciones de hash. Sé que los algoritmos como whirlpool y blowfish producen resultados que no siguen este patrón, pero ¿por qué es lo que más lo hace? ¿Es algún tipo de hardware / software? Si produjeran salidas que fueran a-z0-9 en lugar de a-f0-9, ¿no aumentaría eso su complejidad?

    
pregunta Tar 07.10.2012 - 00:18
fuente

2 respuestas

19

Es solo codificado hexadecimal. Un hash md5 de 16 bytes puede contener caracteres no imprimibles, por lo que se codifica en una cadena hex de 32 caracteres.

    
respondido por el sfx 07.10.2012 - 00:20
fuente
4

Como han respondido otros, las funciones hash (todas ellas, incluidas MD5, SHA-256, Whirlpool y las docenas de otras funciones) generan bits . La salida de MD5 es de 128 bits. Sin embargo, los humanos son malos en la lectura de bits. Los humanos son buenos para leer caracteres . Por lo tanto, cuando la salida de una función hash está destinada al consumo humano, se convierte en caracteres con alguna codificación.

Hexadecimal es una de las codificaciones más simples de bits en caracteres. Convierte una parte de cuatro bits en un dígito o un carácter en el rango 'a' a 'f'. Existen otras codificaciones, p. Ej. Base64 , que utiliza un alfabeto más grande (64 signos en lugar de 16) y es más compacta (la salida de 128 bits de MD5 está codificado como 24 caracteres en Base64, vs 32 en hexadecimal), pero es un poco más complejo de implementar.

Hay muchas variantes posibles con hexadecimal; p.ej. podemos agregar algunos espacios cada pocos caracteres (para facilitar la lectura) u otra puntuación como los signos de dos puntos (':'); Podemos usar letras mayúsculas o minúsculas. Tradición para las salidas de la función hash es usar minúsculas sin espacio ni puntuación. Esta tradición ya estaba vigente en la infancia de MD5: MD5 fue diseñado en 1991, publicado en abril de 1992 como RFC 1321 ; Como puede ver en ese documento (cerca del final, sección A.5), las salidas de hash ya usan hexadecimales en minúsculas.

    
respondido por el Thomas Pornin 24.02.2013 - 03:15
fuente

Lea otras preguntas en las etiquetas