Comment obtenir le checksum MD5 dans PowerShell
- Utilisation de l’algorithme de hachage MD5 dans PowerShell
-
Utilisation de la classe
[System.Security.Cryptography.MD5]
dans PowerShell -
Utilisation de la classe
MD5CryptoServiceProvider
dans PowerShell - Conclusion

Lorsqu’il s’agit d’assurer l’intégrité et la sécurité des données dans PowerShell, l’algorithme de hachage MD5 reste un outil précieux malgré sa pertinence décroissante dans les contextes de sécurité. Bien qu’il ne soit pas recommandé à des fins cryptographiques en raison de vulnérabilités, le MD5 reste utile pour vérifier les transferts de fichiers et détecter toute falsification.
En utilisant les capacités de PowerShell, nous explorons diverses méthodes pour calculer les sommes de contrôle MD5, fournissant des aperçus sur des approches tant fondamentales qu’avancées.
Utilisation de l’algorithme de hachage MD5 dans PowerShell
Même si le MD5 n’est pas recommandé pour la sécurité, c’est toujours une excellente solution pour vérifier si un transfert de fichier a été altéré ou réussi.
Tout d’abord, obtenez l’empreinte MD5 du fichier avant et après le transfert.
S’il en résulte la même valeur, le transfert de fichier n’a pas été altéré. Sinon, il est corrompu.
Pour ce faire, nous allons utiliser la cmdlet Get-FileHash
. La cmdlet Get-FileHash
affiche la valeur de hachage d’un fichier.
Elle utilise l’algorithme SHA256
par défaut, mais nous pouvons ajouter un paramètre supplémentaire pour utiliser MD5
.
Get-FileHash [-Path] <file> [[-Algorithm] <algo>] [Options]
-Algorithm
: Spécifie l’algorithme de hachage à utiliser. Dans ce cas, nous utilisonsMD5
.-Path
: Spécifie le chemin d’accès au fichier pour lequel vous souhaitez calculer la valeur de hachage.
Nous pouvons également l’utiliser avec un flux au lieu d’un chemin de fichier.
Get-FileHash [-InputStream] <stream> [[-Algorithm] <algo>] [Options]
-
[-InputStream] <stream>
: Spécifie le flux d’entrée pour le calcul de hachage, par défaut le fichier spécifié par-Path
. -
[[-Algorithm] <algo>]
: Spécifie l’algorithme de hachage (par exemple,MD5
,SHA1
) à utiliser. -
[Options]
: Paramètres supplémentaires comme-Path
,-LiteralPath
,-Force
, etc., pour personnalisation et gestion des erreurs.
Voici un exemple :
Get-FileHash -Path "path\example.txt" -Algorithm MD5
Dans ce code, nous utilisons la cmdlet Get-FileHash
pour calculer la somme de contrôle MD5 du fichier situé à "C:\Path\To\File.txt"
. La cmdlet calcule automatiquement la valeur de hachage MD5 pour le fichier spécifié.
Sortie :
L’argument -Path
n’est pas obligatoire, donc nous n’avons pas besoin de l’utiliser. Au lieu de cela, nous donnons le chemin du fichier et ajoutons le paramètre d’algorithme pour utiliser MD5
au lieu de SHA256
.
En utilisant PowerShell dans un script, nous pouvons créer une variable avec le résultat et obtenir la valeur de hachage avec la propriété de hachage comme $variable.Hash
pour nous assurer qu’elle est la même valeur que le fichier original.
Hachage de chaînes dans PowerShell
Malheureusement, il n’existe pas de fonction directe ou de commandes natives pour générer un hachage à partir d’une chaîne dans PowerShell.
Cependant, il est possible d’utiliser Get-FileHash
avec un paramètre de flux, ce qui constitue une solution pour calculer le hachage d’une chaîne.
Commençons directement avec le code ci-dessous :
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write("MD5Online")
$writer.Flush()
$stringAsStream.Position = 0
Get-FileHash -InputStream $stringAsStream -Algorithm MD5
Dans ce snippet de code, nous créons un objet MemoryStream
$stringAsStream
et initialisons un StreamWriter $writer
pour écrire la chaîne MD5Online
dans le flux. Nous flushons ensuite le writer pour nous assurer que les données sont écrites dans le flux.
Après avoir remis la position du flux au début, nous utilisons la cmdlet Get-FileHash
avec le paramètre -InputStream
réglé sur $stringAsStream
et le paramètre -Algorithm
réglé sur MD5
. Cette commande calcule la somme de contrôle MD5
de la chaîne fournie.
Sortie :
Comparé à la première section de cet article, le seul changement est que nous avons utilisé -InputStream
au lieu de -Path
.
Comme vous pouvez le voir dans la sortie, nous obtenons le hachage MD5
de notre chaîne comme résultat.
Utilisation de la classe [System.Security.Cryptography.MD5]
dans PowerShell
La classe [System.Security.Cryptography.MD5]
fournit des fonctionnalités pour calculer la valeur de hachage MD5 des données. Cette classe fait partie de l’espace de noms Cryptographie du Framework .NET et offre une solution robuste et efficace pour générer des sommes de contrôle MD5 dans des scripts PowerShell.
La classe [System.Security.Cryptography.MD5]
fournit une méthode appelée ComputeHash()
pour calculer la valeur de hachage MD5. La syntaxe est la suivante :
$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
$md5
: Représente une instance de la classe MD5 créée à l’aide de la méthodeCreate()
.$hash
: Stocke la valeur de hachage MD5 calculée.$data
: Spécifie les données pour lesquelles la somme de contrôle MD5 doit être calculée. Cela peut être un tableau d’octets représentant le contenu d’un fichier ou une chaîne.
Voici un exemple :
$data = [System.Text.Encoding]::UTF8.GetBytes("MD5Example")
$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
$hashString = [System.BitConverter]::ToString($hash) -replace '-', ''
Write-Output $hashString
Dans ce snippet de code, nous convertissons la chaîne MD5Example
en un tableau d’octets à l’aide de [System.Text.Encoding]::UTF8.GetBytes()
. Nous créons ensuite une instance de la classe MD5 en utilisant [System.Security.Cryptography.MD5]::Create()
et appelons la méthode ComputeHash()
pour générer la valeur de hachage MD5 pour les données fournies.
Enfin, nous convertissons la valeur de hachage en format chaîne à l’aide de [System.BitConverter]::ToString()
et supprimons les traits d’union dans la sortie à l’aide de l’opérateur -replace
.
Sortie :
Utilisation de la classe MD5CryptoServiceProvider
dans PowerShell
La classe MD5CryptoServiceProvider
fait partie de l’espace de noms Cryptographie du Framework .NET. Cette classe fournit des fonctionnalités pour calculer la valeur de hachage MD5 des données en utilisant l’algorithme cryptographique MD5.
La classe MD5CryptoServiceProvider
fournit une méthode appelée ComputeHash()
pour calculer la valeur de hachage MD5. La syntaxe est la suivante :
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
$md5
: Représente une instance de la classeMD5CryptoServiceProvider
créée à l’aide deNew-Object
.$hash
: Stocke la valeur de hachage MD5 calculée.$data
: Spécifie les données pour lesquelles la somme de contrôle MD5 doit être calculée. Cela peut être un tableau d’octets représentant le contenu d’un fichier ou une chaîne.
Voici un exemple :
$data = [System.Text.Encoding]::UTF8.GetBytes("MD5Example")
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
$hashString = [System.BitConverter]::ToString($hash) -replace '-', ''
Write-Output $hashString
Dans ce snippet de code, nous convertissons la chaîne MD5Example
en un tableau d’octets à l’aide de [System.Text.Encoding]::UTF8.GetBytes()
. Nous créons ensuite une instance de la classe MD5CryptoServiceProvider
à l’aide de New-Object
et appelons la méthode ComputeHash()
pour générer la valeur de hachage MD5 pour les données fournies.
Enfin, nous convertissons la valeur de hachage en format chaîne à l’aide de [System.BitConverter]::ToString()
et supprimons les traits d’union dans la sortie à l’aide de l’opérateur -replace
.
Sortie :
Conclusion
PowerShell offre plusieurs voies pour calculer des sommes de contrôle MD5, chacune adaptée à différents scénarios et niveaux de complexité. Que ce soit en utilisant des cmdlets intégrées comme Get-FileHash
, en exploitant la puissance des classes .NET telles que System.Security.Cryptography.MD5
, ou en utilisant des fournisseurs cryptographiques comme MD5CryptoServiceProvider
, les utilisateurs de PowerShell disposent d’outils polyvalents pour garantir l’intégrité et la sécurité des données.
En comprenant et en utilisant ces méthodes de manière efficace, les scripts PowerShell peuvent gérer en toute confiance les tâches nécessitant des sommes de contrôle MD5 avec précision et fiabilité.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn