Cuando descargamos archivos a través de Internet, por ejemplo ISOs de sistemas operativos, o paquetes RPM, DEB, etc, vienen acompañados de un «código» (hash MD5 del archivo) que sirve para verificar, una vez descargado el archivo, que no ha sido alterado por terceras partes y que podemos confiar en que es lo que realmente buscamos.
Por ejemplo, si accedemos a uno de los mirrors de CentOS vermos que además de las ISOs podemos descargar sus correspondientes checksum MD5, PGP, SHA…(*.asc y *.txt):
0_README.txt 06-Jul-2012 06:01 2.0K CentOS-6.3-x86_64-LiveCD.iso 07-Jul-2012 13:26 692M CentOS-6.3-x86_64-LiveCD.torrent 09-Jul-2012 14:03 217K CentOS-6.3-x86_64-LiveDVD.iso 06-Jul-2012 09:07 1.6G CentOS-6.3-x86_64-LiveDVD.torrent 09-Jul-2012 13:50 263K CentOS-6.3-x86_64-bin-DVD1.iso 06-Jul-2012 06:20 4.0G CentOS-6.3-x86_64-bin-DVD1to2.torrent 09-Jul-2012 14:15 217K CentOS-6.3-x86_64-bin-DVD2.iso 06-Jul-2012 06:20 1.4G CentOS-6.3-x86_64-minimal-EFI.iso 21-Aug-2012 14:30 364M CentOS-6.3-x86_64-minimal.iso 06-Jul-2012 06:23 330M CentOS-6.3-x86_64-netinstall-EFI.iso 18-Sep-2012 05:39 234M CentOS-6.3-x86_64-netinstall.iso 06-Jul-2012 06:14 200M README.txt 06-Jul-2012 06:01 2.0K md5sum.txt 18-Sep-2012 17:31 734 md5sum.txt.asc 18-Sep-2012 17:31 1.6K sha1sum.txt 18-Sep-2012 17:31 822 sha1sum.txt.asc 18-Sep-2012 17:31 1.7K sha256sum.txt 18-Sep-2012 17:31 1.1K sha256sum.txt.asc 18-Sep-2012 17:31 1.9K
En el caso de los checksum MD5 el fichero tiene el siguiente contenido:
a991defc0a602d04f064c43290df0131 CentOS-6.3-x86_64-bin-DVD1.iso 410c1c5188e6076d62d6107153738a15 CentOS-6.3-x86_64-bin-DVD2.iso 087713752fa88c03a5e8471c661ad1a2 CentOS-6.3-x86_64-minimal.iso 690138908de516b6e5d7d180d085c3f3 CentOS-6.3-x86_64-netinstall.iso 9953ff1cc2ef31da89a0e1f993ee6335 CentOS-6.3-x86_64-LiveCD.iso 0d28b5f9c9f562bd3a17c68ef05b3998 CentOS-6.3-x86_64-LiveDVD.iso 21157a19ec6a32b4fd71f0e45b9aa951 CentOS-6.3-x86_64-bin-DVD1to2.torrent 9015d02b4e22efd547a6bd8b19bce0ec CentOS-6.3-x86_64-LiveCD.torrent 3b9c1c463cfe8983c0835f46f2db39db CentOS-6.3-x86_64-LiveDVD.torrent 4dd1ff9a521823e033dde6b152196de7 CentOS-6.3-x86_64-minimal-EFI.iso c750ba06d83a38494dbf100bf33014d4 CentOS-6.3-x86_64-netinstall-EFI.iso
Cada línea hace referencia al checksum de cada descarga. Una vez descargado, en GNU/Linux debemos comparar ese hash con el del fichero que hemos descargado. Para ello utilizamos el comando «md5sum«:
~$ md5sum CentOS-6.3-x86_64-netinstall.iso 690138908de516b6e5d7d180d085c3f3 CentOS-6.3-x86_64-netinstall.iso
En este caso hemos visto que efectivamente coincide, por lo que es fiable hacer uso del archivo. En el caso de que el hash fuera distinto detectaríamos que el archivo ha sido comprometido y no es fiable su descarga o utilización:
~$ md5sum CentOS-6.3-x86_64-netinstall.iso d41d8cd98f00b204e9800998ecf8427e CentOS-6.3-x86_64-netinstall.iso
Podéis hacer lo mismo con los hash sha y los comandos sha1sum, sha256dum, etc:
~$ sha[TAB] sha1pass sha224sum sha384sum shasum sha1sum sha256sum sha512sum
Ya se que es sencillo acerselo uno mismo, però, no hay ningun escript que cargue el fichero y verifique todos los archivos?
Dracks,
Si te bajas el txt con el hash md5 en la misma ruta que el fichero, puedes ejecutar directamente el comando contra el fichero con los hashes (con el parámetro -c):
Como ves, te dará un OK o fallo según esté bien o mal, si el txt tiene más ficheros y sólo has bajado 1, entonces te dará el OK para uno y fallo en el resto.
Saludos