string - online - md5sum linux
¿Por qué los archivos y cadenas aparentemente vacíos producen md5sums? (3)
El md5sum de "nada" (una secuencia de caracteres de longitud cero) es d41d8cd98f00b204e9800998ecf8427e, que verá en sus dos primeros ejemplos.
El tercer y cuarto ejemplos están procesando un solo carácter. En el caso de "eco", es una línea nueva, es decir,
$ echo -ne ''/n'' | md5sum
68b329da9893e34099c7d8ad5cb9c940 -
En el ejemplo de Perl, es un byte único con valor 0x00, es decir,
$ echo -ne ''/x00'' | md5sum
93b885adfe0da089cdf634904fd59f71 -
Puede reproducir la suma de verificación vacía usando "eco" de la siguiente manera:
$ echo -n '''' | md5sum
d41d8cd98f00b204e9800998ecf8427e -
... y usando Perl de la siguiente manera:
$ perl -e ''print ""'' | md5sum
d41d8cd98f00b204e9800998ecf8427e -
En los cuatro casos, debe esperar que la misma salida compruebe los mismos datos, pero datos diferentes deben producir una suma de comprobación muy diferente (ese es el punto, incluso si solo difiere un solo carácter).
Considera lo siguiente:
% md5sum /dev/null
d41d8cd98f00b204e9800998ecf8427e /dev/null
% touch empty; md5sum empty
d41d8cd98f00b204e9800998ecf8427e empty
% echo '''' | md5sum
68b329da9893e34099c7d8ad5cb9c940 -
% perl -e ''print chr(0)'' | md5sum
93b885adfe0da089cdf634904fd59f71 -
% md5sum ''''
md5sum: : No such file or directory
En primer lugar, estoy sorprendido por la salida de todos estos comandos. En todo caso, esperaría que la suma sea la misma para todos ellos.
No es necesario sorpresa. Los dos primeros producen entradas vacías verdaderas a md5sum. El eco produce una nueva línea ( echo -n ''''
debería producir una salida vacía, no tengo una máquina Linux aquí para verificar). El perl produce un solo byte cero (no debe confundirse con C, donde un byte cero marca el final de la cadena). El último comando está buscando un archivo con la cadena vacía como su nombre de archivo.
¿Por qué los archivos y cadenas aparentemente vacíos producen md5sums?
Porque la " suma " en el md5sum es algo engañosa. No es como, por ejemplo, la suma de comprobación CRC32, que es cero para el archivo vacío.
MD5 es uno de los algoritmos de resumen de mensaje. Puede imaginarlo como una caja que produce un valor de aspecto aleatorio de longitud fija (hash) dependiendo de su estado interno. Cambia el estado interno al alimentar los datos.
Y ese estado interno de la caja está predefinido, de modo que arroja un valor hash de aspecto aleatorio incluso antes de que se d41d8cd98f00b204e9800998ecf8427e
datos. Para MD5, resulta ser d41d8cd98f00b204e9800998ecf8427e
.