Come ottenere il checksum MD5 in PowerShell

  1. Utilizzo dell’algoritmo di hashing MD5 in PowerShell
  2. Utilizzo della classe [System.Security.Cryptography.MD5] in PowerShell
  3. Utilizzo della classe MD5CryptoServiceProvider in PowerShell
  4. Conclusione
Come ottenere il checksum MD5 in PowerShell

Quando si tratta di garantire l’integrità e la sicurezza dei dati in PowerShell, l’algoritmo di hashing MD5 rimane uno strumento prezioso nonostante la sua diminuzione di rilevanza nei contesti di sicurezza. Anche se non è raccomandato per scopi crittografici a causa delle vulnerabilità, l’MD5 rimane utile per verificare i trasferimenti di file e rilevare manomissioni.

Sfruttando le capacità di PowerShell, esploriamo vari metodi per calcolare i checksum MD5, fornendo approfondimenti sia su approcci fondamentali che avanzati.

Utilizzo dell’algoritmo di hashing MD5 in PowerShell

Anche se l’MD5 non è raccomandato per la sicurezza, è ancora una soluzione eccellente per controllare se un trasferimento di file è stato manomesso o ha avuto successo.

Innanzitutto, ottieni l’impronta MD5 del file prima e dopo il trasferimento.

Se il valore risulta lo stesso, il trasferimento del file non è stato manomesso. In caso contrario, è corrotto.

Per fare questo, utilizzeremo il cmdlet Get-FileHash. Il cmdlet Get-FileHash visualizza il valore hash di un file.

Utilizza l’algoritmo SHA256 per impostazione predefinita, ma possiamo aggiungere un parametro extra per utilizzare MD5.

Get-FileHash [-Path] <file> [[-Algorithm] <algo>] [Options]
  • -Algorithm: Specifica l’algoritmo di hash da utilizzare. In questo caso, utilizziamo MD5.
  • -Path: Specifica il percorso del file per il quale si desidera calcolare il valore hash.

Possiamo anche utilizzarlo con uno stream invece di un percorso di file.

Get-FileHash [-InputStream] <stream> [[-Algorithm] <algo>] [Options]
  • [-InputStream] <stream>: Specifica lo stream di input per il calcolo dell’hash, predefinito al file specificato da -Path.

  • [[-Algorithm] <algo>]: Specifica l’algoritmo di hash (ad es., MD5, SHA1) da utilizzare.

  • [Options]: Impostazioni aggiuntive come -Path, -LiteralPath, -Force, ecc., per personalizzazione e gestione degli errori.

Ecco un esempio:

Get-FileHash -Path "path\example.txt" -Algorithm MD5

In questo codice, utilizziamo il cmdlet Get-FileHash per calcolare il checksum MD5 del file situato in "C:\Path\To\File.txt". Il cmdlet calcola automaticamente il valore hash MD5 per il file specificato.

Output:

ottenere il checksum md5 in powershell - output 1

L’argomento -Path non è obbligatorio, quindi non dobbiamo utilizzarlo. Invece, diamo il percorso del file e aggiungiamo il parametro dell’algoritmo per utilizzare MD5 invece di SHA256.

Utilizzando PowerShell in uno script, possiamo creare una variabile con il risultato e ottenere il valore hash con la proprietà hash come $variabile.Hash per assicurarci che sia lo stesso valore del file originale.

Hashing delle stringhe in PowerShell

Sfortunatamente, non esiste una funzione diretta o comandi nativi per generare un hash da una stringa in PowerShell.

Tuttavia, è possibile utilizzare Get-FileHash con un parametro stream, quindi è una soluzione per calcolare l’hash di una stringa.

Cominciamo direttamente con il frammento di codice qui sotto:

$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

In questo frammento di codice, creiamo un oggetto MemoryStream $stringAsStream e inizializziamo un StreamWriter $writer per scrivere la stringa MD5Online nello stream. Quindi svuotiamo lo scrittore per assicurarci che i dati siano scritti nello stream.

Dopo aver impostato la posizione dello stream all’inizio, utilizziamo il cmdlet Get-FileHash con il parametro -InputStream impostato su $stringAsStream e il parametro -Algorithm impostato su MD5. Questo comando calcola il checksum MD5 della stringa fornita.

Output:

ottenere il checksum md5 in powershell - output 2

Rispetto alla prima sezione di questo articolo, l’unico cambiamento è che abbiamo utilizzato -InputStream invece di -Path.

Come puoi vedere nell’output, otteniamo l’hash MD5 della nostra stringa come risultato.

Utilizzo della classe [System.Security.Cryptography.MD5] in PowerShell

La classe [System.Security.Cryptography.MD5] fornisce funzionalità per calcolare il valore hash MD5 dei dati. Questa classe fa parte del namespace Cryptography del .NET Framework e offre una soluzione robusta ed efficiente per generare checksum MD5 negli script di PowerShell.

La classe [System.Security.Cryptography.MD5] fornisce un metodo chiamato ComputeHash() per calcolare il valore hash MD5. La sintassi è la seguente:

$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
  • $md5: Rappresenta un’istanza della classe MD5 creata utilizzando il metodo Create().
  • $hash: Memorizza il valore hash MD5 calcolato.
  • $data: Specifica i dati per i quali deve essere calcolato il checksum MD5. Questo può essere un array di byte che rappresenta il contenuto di un file o una stringa.

Ecco un esempio:

$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

In questo frammento di codice, convertiamo la stringa MD5Example in un array di byte utilizzando [System.Text.Encoding]::UTF8.GetBytes(). Creiamo quindi un’istanza della classe MD5 utilizzando [System.Security.Cryptography.MD5]::Create() e chiamiamo il metodo ComputeHash() per generare il valore hash MD5 per i dati forniti.

Infine, convertiamo il valore hash in un formato stringa utilizzando [System.BitConverter]::ToString() e rimuoviamo eventuali trattini nell’output utilizzando l’operatore -replace.

Output:

ottenere il checksum md5 in powershell - output 3

Utilizzo della classe MD5CryptoServiceProvider in PowerShell

La classe MD5CryptoServiceProvider fa parte del namespace Cryptography del .NET Framework. Questa classe fornisce funzionalità per calcolare il valore hash MD5 dei dati utilizzando l’algoritmo crittografico MD5.

La classe MD5CryptoServiceProvider fornisce un metodo chiamato ComputeHash() per calcolare il valore hash MD5. La sintassi è la seguente:

$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
  • $md5: Rappresenta un’istanza della classe MD5CryptoServiceProvider creata utilizzando New-Object.
  • $hash: Memorizza il valore hash MD5 calcolato.
  • $data: Specifica i dati per i quali deve essere calcolato il checksum MD5. Questo può essere un array di byte che rappresenta il contenuto di un file o una stringa.

Ecco un esempio:

$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

In questo frammento di codice, convertiamo la stringa MD5Example in un array di byte utilizzando [System.Text.Encoding]::UTF8.GetBytes(). Creiamo quindi un’istanza della classe MD5CryptoServiceProvider utilizzando New-Object e chiamiamo il metodo ComputeHash() per generare il valore hash MD5 per i dati forniti.

Infine, convertiamo il valore hash in un formato stringa utilizzando [System.BitConverter]::ToString() e rimuoviamo eventuali trattini nell’output utilizzando l’operatore -replace.

Output:

ottenere il checksum md5 in powershell - output 4

Conclusione

PowerShell offre molteplici possibilità per il calcolo dei checksum MD5, ciascuna adatta a diversi scenari e livelli di complessità. Sia che si utilizzi cmdlet integrati come Get-FileHash, sfruttando la potenza delle classi .NET come System.Security.Cryptography.MD5, o impiegando fornitori crittografici come MD5CryptoServiceProvider, gli utenti di PowerShell hanno strumenti versatili a loro disposizione per garantire l’integrità e la sicurezza dei dati.

Comprendendo e utilizzando questi metodi in modo efficace, gli script PowerShell possono affrontare con sicurezza compiti che richiedono checksum MD5 con precisione e affidabilità.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
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