Como obter a soma de verificação MD5 no PowerShell

  1. Usando o Algoritmo de Hashing MD5 no PowerShell
  2. Usando a Classe [System.Security.Cryptography.MD5] no PowerShell
  3. Usando a Classe MD5CryptoServiceProvider no PowerShell
  4. Conclusão
Como obter a soma de verificação MD5 no PowerShell

Quando se trata de garantir a integridade e a segurança dos dados no PowerShell, o algoritmo de hashing MD5 continua sendo uma ferramenta valiosa, apesar de sua relevância em diminuição nos contextos de segurança. Embora não seja recomendado para fins criptográficos devido a vulnerabilidades, o MD5 continua sendo útil para verificar transferências de arquivos e detectar adulterações.

Aproveitando as capacidades do PowerShell, exploramos vários métodos para calcular somas de verificação MD5, fornecendo insights sobre abordagens tanto fundamentais quanto avançadas.

Usando o Algoritmo de Hashing MD5 no PowerShell

Mesmo que o MD5 não seja recomendado para segurança, ainda é uma excelente solução para verificar se uma transferência de arquivo foi adulterada ou bem-sucedida.

Primeiro, obtenha a impressão digital MD5 do arquivo antes e depois da transferência.

Se resultar no mesmo valor, a transferência de arquivo não foi adulterada. Caso contrário, está corrompida.

Para fazer isso, vamos usar o cmdlet Get-FileHash. O cmdlet Get-FileHash exibe o valor hash de um arquivo.

Ele usa o algoritmo SHA256 por padrão, mas podemos adicionar um parâmetro extra para usar o MD5.

Get-FileHash [-Path] <file> [[-Algorithm] <algo>] [Options]
  • -Algorithm: Especifica o algoritmo de hash a ser usado. Neste caso, usamos MD5.
  • -Path: Especifica o caminho para o arquivo do qual você deseja calcular o valor hash.

Podemos também utilizá-lo com um stream em vez de um caminho de arquivo.

Get-FileHash [-InputStream] <stream> [[-Algorithm] <algo>] [Options]
  • [-InputStream] <stream>: Especifica o stream de entrada para cálculo do hash, padrão para o arquivo especificado por -Path.

  • [[-Algorithm] <algo>]: Especifica o algoritmo de hash (por exemplo, MD5, SHA1) a ser usado.

  • [Options]: Configurações adicionais como -Path, -LiteralPath, -Force, etc., para personalização e tratamento de erros.

Aqui está um exemplo:

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

Neste código, utilizamos o cmdlet Get-FileHash para calcular a soma de verificação MD5 do arquivo localizado em "C:\Path\To\File.txt". O cmdlet calcula automaticamente o valor hash MD5 para o arquivo especificado.

Saída:

obtendo o checksum md5 no powershell - saída 1

O argumento -Path não é obrigatório, então não precisamos usá-lo. Em vez disso, damos o caminho do arquivo e adicionamos o parâmetro do algoritmo para usar MD5 em vez de SHA256.

Usando o PowerShell em um script, podemos criar uma variável com o resultado e obter o valor hash com a propriedade hash como $variable.Hash para garantir que é o mesmo valor do arquivo original.

Hashing de Strings no PowerShell

Infelizmente, não há funções diretas ou comandos nativos para gerar um hash a partir de uma string no PowerShell.

No entanto, é possível usar Get-FileHash com um parâmetro de stream, então é uma solução para calcular o hash de uma string.

Vamos começar diretamente com o snippet abaixo:

$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

Neste trecho de código, criamos um objeto MemoryStream $stringAsStream e inicializamos um StreamWriter $writer para escrever a string MD5Online no stream. Em seguida, esvaziamos o writer para garantir que os dados sejam escritos no stream.

Depois de definir a posição do stream de volta ao início, utilizamos o cmdlet Get-FileHash com o parâmetro -InputStream definido como $stringAsStream e o parâmetro -Algorithm definido como MD5. Este comando calcula a soma de verificação MD5 da string fornecida.

Saída:

obter a soma de verificação md5 no powershell - saída 2

Comparado à primeira seção deste artigo, a única mudança é que usamos -InputStream em vez de -Path.

Como você pode ver na saída, obtemos o hash MD5 da nossa string como resultado.

Usando a Classe [System.Security.Cryptography.MD5] no PowerShell

A classe [System.Security.Cryptography.MD5] fornece funcionalidade para calcular o valor hash MD5 dos dados. Esta classe faz parte do namespace de Criptografia do .NET Framework e oferece uma solução robusta e eficiente para gerar somas de verificação MD5 em scripts do PowerShell.

A classe [System.Security.Cryptography.MD5] fornece um método chamado ComputeHash() para calcular o valor hash MD5. A sintaxe é a seguinte:

$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
  • $md5: Representa uma instância da classe MD5 criada usando o método Create().
  • $hash: Armazena o valor hash MD5 computado.
  • $data: Especifica os dados para os quais a soma de verificação MD5 precisa ser calculada. Isso pode ser um array de bytes representando o conteúdo do arquivo ou uma string.

Aqui está um exemplo:

$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

Neste trecho de código, convertendo a string MD5Example em um array de bytes usando [System.Text.Encoding]::UTF8.GetBytes(). Em seguida, criamos uma instância da classe MD5 usando [System.Security.Cryptography.MD5]::Create() e chamamos o método ComputeHash() para gerar o valor hash MD5 para os dados fornecidos.

Por fim, convertendo o valor hash para um formato de string usando [System.BitConverter]::ToString() e removendo quaisquer traços na saída usando o operador -replace.

Saída:

obtendo a soma de verificação md5 no powershell - saída 3

Usando a Classe MD5CryptoServiceProvider no PowerShell

A classe MD5CryptoServiceProvider faz parte do namespace de Criptografia do .NET Framework. Esta classe fornece funcionalidade para calcular o valor hash MD5 dos dados usando o algoritmo criptográfico MD5.

A classe MD5CryptoServiceProvider fornece um método chamado ComputeHash() para calcular o valor hash MD5. A sintaxe é a seguinte:

$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
  • $md5: Representa uma instância da classe MD5CryptoServiceProvider criada usando New-Object.
  • $hash: Armazena o valor hash MD5 computado.
  • $data: Especifica os dados para os quais a soma de verificação MD5 precisa ser calculada. Isso pode ser um array de bytes representando o conteúdo do arquivo ou uma string.

Aqui está um exemplo:

$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

Neste trecho de código, convertemos a string MD5Example em um array de bytes usando [System.Text.Encoding]::UTF8.GetBytes(). Em seguida, criamos uma instância da classe MD5CryptoServiceProvider usando New-Object e chamamos o método ComputeHash() para gerar o valor hash MD5 para os dados fornecidos.

Por fim, convertemos o valor hash para um formato de string usando [System.BitConverter]::ToString() e removemos quaisquer traços na saída usando o operador -replace.

Saída:

obtendo a soma de verificação md5 no powershell - saída 4

Conclusão

O PowerShell oferece várias maneiras de computar somas de verificação MD5, cada uma adequada a diferentes cenários e níveis de complexidade. Seja usando cmdlets embutidos como Get-FileHash, aproveitando o poder de classes do .NET como System.Security.Cryptography.MD5, ou utilizando provedores criptográficos como MD5CryptoServiceProvider, os usuários do PowerShell têm ferramentas versáteis à sua disposição para garantir a integridade e a segurança dos dados.

Ao compreender e utilizar esses métodos de forma eficaz, os scripts do PowerShell podem lidar com confiança em tarefas que requerem somas de verificação MD5 com precisão e confiabilidade.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
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