Inconsistencia entre los protocolos de hash MD5, SHA1 y SHA256

0

Parece que hay una incoherencia (o protocolo no publicado) en muchos generadores de hash en línea cuando se formula un hash a partir de un archivo de texto cargado, en lugar de hacer un hash estricto del contenido de un archivo. Este problema parece no estar relacionado con el nombre del archivo, pero puede replicarse de manera consistente.

Por ejemplo, marque lo siguiente (copiando y pegando en enlace ) ...

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.

... produce un hash MD5 de: A5E90C16BEB53BB93468496EAF2E0AC4.

Sin embargo, si uno copia lo anterior en un archivo de texto, luego carga el archivo, el hash MD5 producido es: 8F18B10192372D8523558CF65DB2B1B2, independientemente del nombre del archivo.

Además del sitio anterior, se puede reproducir en "passwordsgenerator.net/md5-hash-generator/" (copiar y pegar) y "md5file.com/calculator" (carga de archivos), y es consistente entre MD5, SHA-1, y SHA-256.

Esto implica que hay caracteres invisibles que se están introduciendo de forma coherente dentro de la carga del archivo (independientemente del nombre de archivo) que están jugando con el hash, o que los algoritmos están agregando / restando caracteres al importar el archivo (improbable).

¿Por qué estos hashes son diferentes?

Estoy en una máquina con Windows, usando el bloc de notas básico para la creación de archivos. Por favor, disculpe los enlaces de "cotización" arriba; No mantengo una reputación apropiada para múltiples enlaces en una publicación.

    
pregunta Miller 18.09.2017 - 00:02
fuente

2 respuestas

4

A5E90C16BEB53BB93468496EAF2E0AC4 es el hash MD5 de ese texto con finales de línea de estilo Unix (LF).

8F18B10192372D8523558CF65DB2B1B2 es el hash MD5 de ese texto con finales de línea de estilo de Windows (CRLF).

Ya que estás usando el Bloc de notas en Windows, supongo que el primer sitio está convirtiendo los finales de línea al estilo Unix antes de incluir el texto en hash.

    
respondido por el John Morahan 18.09.2017 - 00:38
fuente
0

Sin poder ver el código detrás del sitio web, probablemente sospecho que algo muy simple está sucediendo.

Cuando ingresas el texto en el cuadro de entrada, el código de fondo lo trata como una simple cadena. Cada lenguaje de programación tiene su propia codificación, como ASCII o UTF-8.

En el archivo, lo estás guardando con una codificación, que el código del sitio web parece tener en cuenta. Puedes ver esto con el Bloc de notas en Windows. Guarde un documento como "ANSI", "Unicode", "Unicode big endian" y "UTF-8". Abra cada documento en un Editor Hex después de guardarlo. Notará que algunos tienen una "marca de formato" para indicar qué tipo de codificación se utiliza.

Este comportamiento puede ser intencional o no. Algo para tener en cuenta.

    
respondido por el dark_st3alth 18.09.2017 - 00:26
fuente

Lea otras preguntas en las etiquetas