md5sum est un outil en ligne de commande qui permet de calculer et vérifier la somme de contrôle MD5 d'un ou plusieurs fichiers. Il est installé par défaut sous Linux (dans le paquet coreutils) et Mac, mais existe également sous Windows.
Il faut noter que MD5 n'est plus un algorithme de hachage considéré comme sûr depuis 2004.
Si l'on n'avait qu'une commande à retenir pour vérifier le hash MD5 d'un fichier, ce serait celle-là (noter le double espace séparant les 2 champs dans le echo) :
echo "<hash original> <nom du fichier>" | md5sum -c -
Pour les explications, c'est plus bas…
Pour calculer le checksum MD5 d'un fichier : md5sum <nom_du_fichier>
; par exemple :
md5sum FGT_3810A-v5-build0670-FORTINET.out 18325c14f59033c1deb68229bf3b1e69 FGT_3810A-v5-build0670-FORTINET.out
Il suffit ensuite de comparer le résultat (18325c14f59033c1deb68229bf3b1e69) au checksum MD5 fourni par le fournisseur du fichier (dans cet exemple, disponible sur le site web de Fortinet).
Mais comme c'est compliqué de comparer des hash MD5 à l’œil nu, on peut aussi demander à md5sum de le faire à notre place en utilisant un fichier “MD5SUM”, dont la structure est : <checksum> <nom_du_fichier>
(on notera qu'il y a bien 2 espaces entre la checksum et le nom du fichier, comme dans le résultat de la commande md5sum lancée plus haut d'ailleurs). Ce fichier doit être situé dans le même répertoire que les fichiers à vérifier.
Pour calculer + vérifier une liste de fichiers :
# contenu de mon répertoire : une liste d'images fortiOS # + le fichier de sommes de contrôle "MD5SUMS" ls FGT_1240B-v5-build0670-FORTINET.out FGT_3810A-v5-build0670-FORTINET.out FGT_600C-v5-build0670-FORTINET.out FGT_800C-v5-build0670-FORTINET.out MD5SUMS # contenu de MD5SUMS = les checksum fournies sur le site web de fortinet cat MD5SUMS bdf82163881bae4688dd9eb4140075a4 FGT_1240B-v5-build0670-FORTINET.out 18325c14f59033c1deb68229bf3b1e69 FGT_3810A-v5-build0670-FORTINET.out e3ec154e08866c14980af9b03ac5ab99 FGT_600C-v5-build0670-FORTINET.out b720266ffe3ab2573c8fde9032986a55 FGT_800C-v5-build0670-FORTINET.out # calcul des checksums des images fortios # + comparaison avec celles du fichier MD5SUMS md5sum -c MD5SUMS FGT_1240B-v5-build0670-FORTINET.out: OK FGT_3810A-v5-build0670-FORTINET.out: OK FGT_600C-v5-build0670-FORTINET.out: OK FGT_800C-v5-build0670-FORTINET.out: OK
Si on n'a qu'un seul fichier à vérifier, on peut simplement vérifier le fichier ainsi :
echo "bdf82163881bae4688dd9eb4140075a4 FGT_1240B-v5-build0670-FORTINET.out" | md5sum -c - FGT_1240B-v5-build0670-FORTINET.out: OK
Ici on envoie sur l'entrée de md5sum le checksum attendue + le nom du fichier à vérifier.