Je voudrais calculer une somme de contrôle MD5 de certains contenus. Comment faire cela dans PowerShell?
powershell
powershell-2.0
Luc101
la source
la source
Réponses:
Si le contenu est une chaîne:
Si le contenu est un fichier:
À partir de PowerShell version 4, cela est facile à faire pour les fichiers prêts à l'
Get-FileHash
emploi avec l' applet de commande:C'est certainement préférable car cela évite les problèmes qu'offre la première solution tels qu'identifiés dans les commentaires (utilise un flux, le ferme et prend en charge les gros fichiers).
la source
Exception calling "ReadAllBytes" with "1" argument(s): "The file is too long. This operation is currently limited to supporting files less than 2 gigabytes in size."
En tant que nouveau venu de Linux sur Powershell, je suis très ennuyé par les difficultés que j'ai pour obtenir une somme md5, qui serait simplementmd5sum file.ext
sous Linux.$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)))
cela vous donne une faible utilisation de la mémoire et aucune limite de 2 Go .$stream = [System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
puis$hash = [System.BitConverter]::ToString($md5.ComputeHash($stream))
puis$stream.Close()
Si vous utilisez les extensions de communauté PowerShell, il existe une commande Get-Hash qui le fera facilement:
la source
Get-FileHash
dans vanilla PowerShell 4.0. Vide TechNet .Voici les deux lignes, changez simplement "bonjour" à la ligne 2:
la source
Voici une fonction que j'utilise qui gère les chemins relatifs et absolus:
Merci à @davor ci-dessus pour la suggestion d'utiliser Open () au lieu de ReadAllBytes () et à @ jpmc26 pour la suggestion d'utiliser un bloc finally.
la source
Dispose
appel doit être dans unfinally
bloc.Une autre commande intégrée qui est installée depuis longtemps dans Windows par défaut et qui remonte à 2003 est Certutil , qui peut bien sûr être également appelée à partir de PowerShell.
(Attention: MD5 doit être en majuscules pour une robustesse maximale)
la source
FipsAlgorithmPolicy
est activé.Il existe de nombreux exemples en ligne utilisant ComputeHash (). Mes tests ont montré que c'était très lent lors de l'exécution sur une connexion réseau. L'extrait ci-dessous est beaucoup plus rapide pour moi, mais votre kilométrage peut varier:
la source
write-progress
ligne? Le surligneur de syntaxe ne semble pas l'apprécier.Ce site a un exemple: Utilisation de Powershell pour les sommes de contrôle MD5 . Il utilise le framework .NET pour instancier une instance de l'algorithme de hachage MD5 afin de calculer le hachage.
Voici le code de l'article, intégrant le commentaire de Stephen:
la source
Comme indiqué dans la réponse acceptée,
Get-FileHash
est facile à utiliser avec des fichiers, mais il est également possible de l'utiliser avec des chaînes:la source
Il existe maintenant une fonction Get-FileHash qui est très pratique.
Changez simplement
SHA384
pourMD5
.L'exemple provient de la documentation officielle de PowerShell 5.1 . La documentation a plus d'exemples.
la source
Cela devient une ligne unique si vous téléchargez le vérificateur d'intégrité de la somme de contrôle des fichiers (FCIV) de Microsoft.
J'ai téléchargé FCIV à partir d'ici: Disponibilité et description de l'utilitaire File Checksum Integrity Verifier
Exécutez la commande suivante. J'avais dix fichiers à vérifier.
la source
PowerShell One-Liners (chaîne en hachage)
MD5
SHA1
SHA256
SHA384
SHA512
la source
Cela renverra un hachage MD5 pour un fichier sur un ordinateur distant:
la source
Exemple d'option de menu contextuel également:
la source
Voici un joli exemple d'impression tentant de vérifier l'empreinte digitale SHA256. J'ai téléchargé gpg4win v3.0.3 en utilisant PowerShell v4 (nécessite
Get-FileHash
).Téléchargez le package à partir de https://www.gpg4win.org/download.html , ouvrez PowerShell, récupérez le hachage sur la page de téléchargement et exécutez:
Production:
la source
Voici un exemple de commande en une ligne avec à la fois le calcul de la somme de contrôle appropriée du fichier , comme vous venez de le télécharger, et la comparaison avec la somme de contrôle publiée de l'original.
Par exemple, j'ai écrit un exemple de téléchargement à partir du projet Apache JMeter . Dans ce cas, vous avez:
Ensuite, à l'aide de cette commande PowerShell, vous pouvez vérifier l'intégrité du fichier téléchargé:
Production:
Explication:
Le premier opérande d'
-eq
opérateur est le résultat du calcul de la somme de contrôle du fichier:Le deuxième opérande est la valeur de la somme de contrôle publiée. Nous obtenons d'abord le contenu du fichier.md5 qui est une chaîne, puis nous extrayons la valeur de hachage en fonction du format de la chaîne:
Le fichier et le fichier.md5 doivent être dans le même dossier pour que cette commande fonctionne.
la source
C'est ce que j'utilise pour obtenir une valeur de hachage cohérente:
la source
Voici l'extrait que j'utilise pour obtenir le MD5 pour une chaîne donnée:
la source