Comment obtenir le checksum MD5 dans PowerShell

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

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 utilisons MD5.
  • -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 :

obtenir le checksum md5 dans powershell - sortie 1

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 :

obtenir la somme de contrôle md5 dans powershell - sortie 2

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éthode Create().
  • $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 :

obtenir le checksum md5 dans powershell - sortie 3

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 classe MD5CryptoServiceProvider créée à l’aide de New-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 :

obtenir le checksum md5 dans powershell - sortie 4

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é.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn