PowerShell : comment calculer le hash d’un fichier ?
I. Présentation
Dans ce tutoriel, nous allons voir comment calculer le hash d'un fichier avec PowerShell ! Depuis PowerShell 4.0, le cmdlet nommé "Get-FileHash" est présent et il permet de calculer le hash d'un ou de plusieurs fichiers selon plusieurs algorithmes.
PowerShell 4.0 est disponible nativement depuis Windows 8.1 et Windows Server 2012 R2, ce qui en fait une version très largement répandue aujourd'hui.
Le hash d'un fichier est souvent utilisé pour vérifier l'intégrité du fichier. Les algorithmes de hachage couramment utilisés comprennent MD5, SHA-1, SHA-256, etc. Chacun de ces algorithmes produit un hash de longueur différente.
Par exemple, si vous téléchargez un fichier à partir d'Internet, vous pouvez comparer le hash du fichier téléchargé avec le hash fourni par le site web pour vous assurer que le fichier n'a pas été altéré pendant le téléchargement. Si les deux valeurs sont égales, vous pouvez affirmer que le fichier est authentique (vis-à-vis de la version d'origine). Ceci peut s'avérer utile aussi pour de l'échange de données.
Vous pouvez calculer le hash des différents types de fichiers : images ISO, packages d'installation d'applications (EXE, MSI, etc.), et tout autre fichier selon vos besoins.
Version originale de l'article : 11 décembre 2013.
II. Utilisation de Get-FileHash
Intéressons-nous au cmdlet évoqué en introduction de cet article.
Voici la syntaxe à utiliser :
Get-FileHash -Algorithm <Nom-algorithme> -Path <Chemin-vers-fichier>
Concernant les algorithmes, voici ceux disponibles avec Windows PowerShell 5.1 :
- MAC Triple DES
- MD5
- RIPEMD160
- SHA1
- SHA256
- SHA384
- SHA512
Attention, avec PowerShell 7, le nombre d'algorithmes pris en charge est différent et plus limité : MD5, SHA1, SHA256, SHA384 et SHA512. Dans les deux cas, SHA256 est la valeur par défaut du paramètre "-Algorithm".
Ouvrez une console pour essayer la commande. Par exemple, pour calculer le hash SHA1 du fichier "it-connect.txt" situé dans "C:\files\" :
Get-FileHash -Algorithm SHA1 -Path "C:\files\it-connect.txt"
Cela donnera un résultat de ce type où l'on voit le hash :
Que faire de cette information ? La valeur du hash retournée ici peut être comparée avec la valeur de hash fournie sur le site depuis lequel vous avez téléchargé le fichier. Sinon, vous pouvez aussi calculer le hash et au moment de transmettre le fichier à quelqu'un, vous lui fournissez aussi le hash. Ceci lui permettra de vérifier l'authenticité du fichier reçu.
Vous pouvez aussi calculer le hash d'un ensemble de fichiers. Voici un exemple :
Get-FileHash -Algorithm SHA256 -Path *.* | Format-List Path,Hash
Ci-dessous, le résultat en image. Le résultat est identique à chaque fois, car il s'agit d'un même fichier dupliqué : d'ailleurs le hash identique permet de l'affirmer.
III. Conclusion
Vous êtes désormais en mesure de calculer un hash facilement sous Windows, avec une commande simplissime mais à connaître : Get-FileHash.