Get-FileHash
Calcule la valeur de hachage pour un fichier en utilisant un algorithme de hachage spécifié.
Syntaxe
Get-FileHash
[-Path] <String[]>
[-Algorithm <String>]
[<CommonParameters>]
Get-FileHash
-LiteralPath <String[]>
[-Algorithm <String>]
[<CommonParameters>]
Get-FileHash
-InputStream <Stream>
[-Algorithm <String>]
[<CommonParameters>]
Description
L’applet Get-FileHash
de commande calcule la valeur de hachage d’un fichier à l’aide d’un algorithme de hachage spécifié.
Une valeur de hachage est une valeur unique qui correspond au contenu du fichier. Au lieu d'identifier le contenu d'un fichier par son nom, son extension ou toute autre désignation, un hachage assigne une valeur unique au contenu d'un fichier. Les extensions et les noms de fichiers peuvent être modifiés sans changer le contenu du fichier ni la valeur de hachage. De même, le contenu du fichier peut être modifié sans modifier le nom ou l’extension. Toutefois, la modification d'un seul caractère dans le contenu d'un fichier change la valeur de hachage du fichier.
L'objectif des valeurs de hachage est de fournir un moyen sécurisé par chiffrement de vérifier que le contenu d'un fichier n'a pas été modifié. Bien que certains algorithmes de hachage, y compris MD5 et SHA1, ne soient plus considérés comme sécurisés contre les attaques, l’objectif d’un algorithme de hachage sécurisé est de rendre impossible de modifier le contenu d’un fichier (par accident, ou par une tentative malveillante ou non autorisée) et de conserver la même valeur de hachage. Vous pouvez également utiliser des valeurs de hachage pour déterminer si deux fichiers différents ont exactement le même contenu. Si les valeurs de hachage de deux fichiers sont identiques, le contenu des fichiers est aussi identique.
Par défaut, l’applet Get-FileHash
de commande utilise l’algorithme SHA256, bien que n’importe quel algorithme de hachage pris en charge par le système d’exploitation cible puisse être utilisé.
Exemples
Exemple 1 : Calculer la valeur de hachage d’un fichier
Cet exemple utilise l’applet Get-FileHash
de commande pour calculer la valeur de hachage du Powershell.exe
fichier.
L'algorithme de hachage utilisé est la valeur par défaut, SHA256. La sortie est redirigée vers l’applet Format-List
de commande pour mettre en forme la sortie sous forme de liste.
Get-FileHash $PSHOME\powershell.exe | Format-List
Algorithm : SHA256
Hash : 908B64B1971A979C7E3E8CE4621945CBA84854CB98D76367B791A6E22B5F6D53
Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Exemple 2 : Calculer la valeur de hachage d’un fichier ISO
Cet exemple utilise l’applet Get-FileHash
de commande et l’algorithme SHA384 pour calculer la valeur de hachage d’un fichier ISO téléchargé par un administrateur à partir d’Internet. La sortie est redirigée vers l’applet Format-List
de commande pour mettre en forme la sortie sous forme de liste.
Get-FileHash C:\Users\user1\Downloads\Contoso8_1_ENT.iso -Algorithm SHA384 | Format-List
Algorithm : SHA384
Hash : 20AB1C2EE19FC96A7C66E33917D191A24E3CE9DAC99DB7C786ACCE31E559144FEAFC695C58E508E2EBBC9D3C96F21FA3
Path : C:\Users\user1\Downloads\Contoso8_1_ENT.iso
Exemple 3 : Calculer la valeur de hachage d’un flux
Pour cet exemple, nous utilisons System.Net.WebClient pour télécharger un package à partir de la page de publication PowerShell. La page de mise en production documente également le hachage SHA256 de chaque fichier de package. Nous pouvons comparer la valeur de hachage publiée à celle que nous calculons avec Get-FileHash
.
$wc = [System.Net.WebClient]::new()
$pkgurl = 'https://github.com/PowerShell/PowerShell/releases/download/v6.2.4/powershell_6.2.4-1.debian.9_amd64.deb'
$publishedHash = '8E28E54D601F0751922DE24632C1E716B4684876255CF82304A9B19E89A9CCAC'
$FileHash = Get-FileHash -InputStream ($wc.OpenRead($pkgurl))
$FileHash.Hash -eq $publishedHash
True
Exemple 4 : Calculer le hachage d’une chaîne
PowerShell ne fournit pas d’applet de commande pour calculer le hachage d’une chaîne. Toutefois, vous pouvez écrire une chaîne dans un flux et utiliser le paramètre InputStream pour obtenir la valeur de Get-FileHash
hachage.
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write("Hello world")
$writer.Flush()
$stringAsStream.Position = 0
Get-FileHash -InputStream $stringAsStream | Select-Object Hash
Hash
----
64EC88CA00B268E5BA1A35678A1B5316D212F4F366B2477232534A8AECA37F3C
Paramètres
-Algorithm
Spécifie la fonction de hachage de chiffrement à utiliser pour calculer la valeur de hachage du contenu du fichier ou du flux spécifié. Une fonction de hachage de chiffrement a la propriété qu’il est impossible de trouver deux fichiers différents avec la même valeur de hachage. Les fonctions de hachage sont couramment utilisées avec des signatures numériques et pour l'intégrité des données. Les valeurs valides pour ce paramètre sont :
- SHA1
- SHA256
- SHA384
- SHA512
- MACTripleDES
- MD5
- RIPEMD160
Si aucune valeur n'est spécifiée, ou que le paramètre est omis, la valeur par défaut est SHA256.
Pour des raisons de sécurité, MD5 et SHA1, qui ne sont plus considérées comme sécurisées, ne doivent être utilisées que pour la validation de modifications simples et non pour générer des valeurs de hachage pour des fichiers qui nécessitent une protection contre les attaques ou la falsification.
Type: | String |
Valeurs acceptées: | SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160 |
Position: | Named |
Valeur par défaut: | SHA256 |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputStream
Spécifie le flux d’entrée.
Type: | Stream |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-LiteralPath
Spécifie le chemin d'accès à un fichier. Contrairement au paramètre Path , la valeur du paramètre LiteralPath est utilisée exactement comme il est typé. Aucun caractère n'est interprété en tant que caractère générique. Si le chemin d'accès inclut des caractères d'échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter les caractères comme séquences d’échappement.
Type: | String[] |
Alias: | PSPath |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-Path
Spécifie le chemin d’accès à un ou plusieurs fichiers sous forme de tableau. Les caractères génériques sont autorisés.
Type: | String[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | True |
Entrées
Vous pouvez diriger une chaîne contenant un chemin d’accès à un fichier vers cette applet de commande.
Sorties
Microsoft.PowerShell.Utility.FileHash
Cette applet de commande retourne un objet représentant le chemin d’accès au fichier spécifié, la valeur du hachage calculé et l’algorithme utilisé pour calculer le hachage.