Una suma de comprobación es un dígito que sirve como suma de dígitos correctos en los datos, que se puede utilizar posteriormente para detectar errores en los datos durante el almacenamiento o la transmisión. Las sumas MD5 (Message Digest 5) pueden utilizarse como suma de comprobación para verificar archivos o cadenas en un sistema de archivos de Linux.
Las sumas MD5 son cadenas de caracteres de 128 bits (números y letras) resultantes de ejecutar el algoritmo MD5 contra un archivo específico. El algoritmo MD5 es una popular función hash que genera un compendio de mensajes de 128 bits denominado valor hash, y cuando se genera uno para un archivo concreto, éste es precisamente invariable en cualquier máquina sin importar el número de veces que se genere.
Normalmente es muy difícil encontrar dos archivos distintos que den como resultado las mismas cadenas. Por lo tanto, puede utilizar md5sum para comprobar la integridad de los datos digitales determinando que un archivo o ISO que ha descargado es una copia bit a bit del archivo o ISO remoto.
Lectura sugerida: Progreso – Monitorizar el progreso de los comandos (cp, mv, dd, tar, etc.) en Linux
En Linux, el programa md5sum computa y comprueba los valores hash MD5 de un archivo. Es un componente del paquete GNU Core Utilities, por lo que viene preinstalado en la mayoría, si no en todas las distribuciones de Linux.
Echa un vistazo al contenido de /etc/group
guardado como groups.cvs a continuación.
El comando md5sums que aparece a continuación generará un valor hash para el archivo como el siguiente:
$ md5sum groups.csvbc527343c7ffc103111f3a694b004e2f groups.csv
Cuando intente alterar el contenido del archivo eliminando la primera línea, root:x:0:
y luego ejecute el comando por segunda vez, intente observar el valor hash:
$ md5sum groups.csv46798b5cfca45c46a84b7419f8b74735 groups.csv
Notarás que el valor hash ha cambiado, indicando que el contenido del archivo fue alterado.
Ahora, vuelve a poner la primera línea del archivo, root:x:0:
y renómbralo como group_file.txt y ejecuta el siguiente comando para generar de nuevo su valor hash:
$ md5sum groups_list.txtbc527343c7ffc103111f3a694b004e2f groups_list.txt
De la salida anterior, el valor hash sigue siendo el mismo aunque el archivo haya sido renombrado, con su contenido original.
Importante: las sumas md5 sólo verifican/trabajan con el contenido del archivo y no con el nombre del mismo.
El archivo grupos_lista.txt es un duplicado de grupos.csv, así que, intenta generar el valor hash de los archivos al mismo tiempo de la siguiente manera.
Verás que ambos tienen valores hash iguales, esto se debe a que tienen exactamente el mismo contenido.
$ md5sum groups_list.txt groups.csv bc527343c7ffc103111f3a694b004e2f groups_list.txtbc527343c7ffc103111f3a694b004e2f groups.csv
Puedes redirigir el valor(es) hash de un archivo(s) a un archivo de texto y almacenarlo, compartirlo con otros. Para los dos archivos anteriores, puedes emitir el siguiente comando para redirigir los valores hash generados a un archivo de texto para su uso posterior:
$ md5sum groups_list.txt groups.csv > myfiles.md5
Para comprobar que los archivos no han sido modificados desde que creaste la suma de comprobación, ejecuta el siguiente comando. Deberías poder ver el nombre de cada archivo junto con «OK».
Lectura sugerida: Encontrar los 15 principales procesos por uso de memoria en Linux
La opción -c
o --check
le dice al comando md5sums que lea las sumas MD5 de los archivos y las compruebe.
$ md5sum -c myfiles.md5groups_list.txt: OKgroups.csv: OK
Recuerda que después de crear la suma de comprobación, no puedes renombrar los archivos o de lo contrario obtendrás un error «No such file or directory», cuando intentes verificar los archivos con nuevos nombres.
Por ejemplo:
$ mv groups_list.txt new.txt$ mv groups.csv file.txt$ md5sum -c myfiles.md5
md5sum: groups_list.txt: No such file or directorygroups_list.txt: FAILED open or readmd5sum: groups.csv: No such file or directorygroups.csv: FAILED open or readmd5sum: WARNING: 2 listed files could not be read
El concepto también funciona para las cadenas, en los comandos de abajo, -n
significa que no se emite la nueva línea final:
$ echo -n "Tecmint How-Tos" | md5sum - afc7cb02baab440a6e64de1a5b0d0f1b -
$ echo -n "Tecmint How-To" | md5sum - 65136cb527bff5ed8615bd1959b0a248 -
En esta guía, te mostré cómo generar valores hash para archivos, crear una suma de comprobación para la posterior verificación de la integridad del archivo en Linux. Aunque se han detectado vulnerabilidades de seguridad en el algoritmo MD5, los hashes MD5 siguen siendo útiles especialmente si confías en la parte que los crea.