¿Cambiar el nombre de un archivo afectará el hash MD5 de un archivo?

89

¿Cambiar el nombre de un archivo afectará al Hash MD5 de un archivo?

Michael Shnitzer
fuente

Respuestas:

31

Solo si el nombre del archivo se incluyó en el cálculo de hash. por ejemplo, en pseudocódigo:

$hash1 = md5(contents of file);
$hash2 = md5(name of file + contents of file);

producirá dos hashes separados.

Marc B
fuente
20
La pregunta es sobre la herramienta CLI "md5sum", no sobre el algoritmo en general.
jameshfisher
206

No, el hash es solo del contenido del archivo. Puede ver esto en el código fuentemd5sum y su implementación MD5 . También puede probar esto si tiene acceso a md5sum:

$ echo "some arbitrary content" > file1
$ cp file1 file2
$ md5sum file1
f0007cbddd79de02179de7de12bec4e6  file1
$ md5sum file2
f0007cbddd79de02179de7de12bec4e6  file2
$
jameshfisher
fuente
18
Esta debería ser la respuesta. La pregunta tiene la etiqueta "md5sum".
ingyhere
3
Gracias por una respuesta directa.
Eddie B
¡Perfecto! No tenía Linux para probar eso. Pero tengo
Stackoverflow
No necesitas usar Linux para saber esto. Puede producir el mismo resultado en MacOSX o Windows.
Alexandre Mulatinho
1
En caso de que alguien esté buscando el equivalente de Windows como lo mencionó @alexandreMulatinho: reemplace md5sum con fciv y cp con copy, y funciona igual. Si luego ingresa al subsistema de Windows para Linux, los hashes de md5sum coinciden con los de fciv.
Jake Stevens-Haas
4

En Linux que usa el sistema de archivos EXT, no lo hará, porque el nombre de un archivo no se almacena en un archivo, se almacena en la entrada del directorio (dentry) en el que reside el archivo, donde el inodo del archivo se asigna a un nombre. Cambiar un nombre de archivo no tendrá ningún efecto en su md5sum en Linux. En Windows, no puedo estar seguro.

GL2014
fuente
3
Además, los sistemas de archivos de Windows no almacenan el nombre del archivo en el archivo. Un puerto sencillo de md5sumdebería comportarse como se esperaba.
MauganRa
1

Si el hash se calcula a partir del contenido del archivo, no debería.

Ted Hopp
fuente
4
La pregunta es sobre la herramienta CLI "md5sum", no sobre el algoritmo en general.
jameshfisher
0

En ESXi (Precisely ESXi 5.5) md5sum en el mismo contenido pero con diferentes nombres de archivo es diferente. Eso me lleva a creer que la estructura de archivos VMFS-5 también incluye el nombre del archivo. Si no nos preocupa el nombre del archivo, ¿hay alguna forma de verificar solo el md5sum del contenido del archivo? No pude ver ninguna opción. ¿Alguna sugerencia?

Venfah Nazir
fuente
¿De qué archivos estás hablando? Imágenes de disco virtual ( .vmdk)? En los encabezados vmdk hay datos que pueden depender del nombre y la ubicación del archivo. ¿Cómo cambió el nombre de los archivos en su prueba? --- De lo contrario, desde el punto de vista del contenido del archivo, VMFS es un sistema de archivos normal y el contenido de los archivos no depende directamente de sus nombres.
pabouk
-1

En respuesta al comentario, https://stackoverflow.com/a/14360831/9392847 :

Esto solo funciona si un archivo es copia de otro archivo, pero no cuando se generan dos archivos diferentes con nombres diferentes con exactamente el mismo contenido. He intentado esto:

nancy@nancy:~/Documents$ md5sum /home/nancy/Documents/1test.pdf
c5a445b7186dfb220ea79d2001acf3f1  /home/nancy/Documents/1test.pdf
nancy@nancy:~/Documents$ md5sum /home/nancy/Documents/2test.pdf
cefa063abf0c0a9e80b2b75e70100836  /home/nancy/Documents/2test.pdf

Tanto los archivos 1test.pdf como 2test.pdf se crean utilizando el software gimp . El mismo contenido se exporta dos veces con dos nombres diferentes.

Nancy
fuente
Eso significa que el contenido del archivo no es exactamente el mismo ... El programa debe exportar diferentes metadatos en cada uno
Milney
-2

1.md5 se calcula en función del contenido binario del ARCHIVO. 2.Nombre del archivo, última modificación, etc., las cosas son metadatos. He probado esto con los pasos a continuación, trabajemos con los metadatos de la "última modificación" i) Creé un archivo llamado "a.txt" y agregué algo de contenido y creé un hash, digamos que el hash es "xyz" ii) Entonces tengo acabo de agregar un espacio en el archivo y de nuevo calculé el hash, diga que devolvió "abc" iii) Acabo de eliminar mi cambio en el paso (ii), al calcular el hash nuevamente, obtuve el hash inicial ("xyz")

Esto concluye que a pesar de que se cambian los metadatos del archivo, el hash permanece igual hasta que el contenido del archivo permanece inalterado.

Espero eso ayude.

marrón
fuente