Como Calcular o Hash SHA-256 no PowerShell Sem Importar Módulo no Windows 11
🔍 WiseChecker

Como Calcular o Hash SHA-256 no PowerShell Sem Importar Módulo no Windows 11

Você precisa verificar a integridade de um arquivo baixado ou conferir uma soma de verificação no Windows 11. O PowerShell oferece uma forma nativa de calcular hashes SHA-256 sem instalar ou importar módulos externos. Este artigo explica como usar o cmdlet Get-FileHash e as classes .NET subjacentes para gerar hashes SHA-256 diretamente da linha de comando. Você aprenderá os comandos exatos, entenderá como funcionam e evitará erros comuns que produzem valores de hash incorretos.

Principais Conclusões: Calcular Hash SHA-256 no PowerShell no Windows 11

  • Get-FileHash -Algorithm SHA256 -Path <arquivo>: O cmdlet nativo do PowerShell para calcular o hash SHA-256 de qualquer arquivo sem precisar de módulo
  • Método [System.Security.Cryptography.SHA256]::Create().ComputeHash(): A classe .NET que o PowerShell pode chamar diretamente para cenários avançados, como hash de strings ou streaming de dados
  • Conversão Format-Hex ou ToString: Necessária para converter a saída bruta de bytes dos métodos .NET na string hexadecimal padrão do hash

ADVERTISEMENT

Entendendo o SHA-256 e as Capacidades Nativas do PowerShell

SHA-256 é uma função hash criptográfica que produz um valor hash de 256 bits (32 bytes). Faz parte da família SHA-2 e é amplamente usado para verificação de integridade de arquivos, assinaturas digitais e armazenamento de senhas. O Windows 11 inclui suporte a SHA-256 no .NET Framework, que o PowerShell pode acessar sem downloads adicionais.

O PowerShell versão 4.0 e posteriores incluem o cmdlet Get-FileHash. Esse cmdlet usa as classes criptográficas .NET internamente. Você não precisa importar um módulo como Microsoft.PowerShell.Utility explicitamente, pois ele é carregado por padrão no PowerShell 5.1 e PowerShell 7.x. O cmdlet suporta vários algoritmos: SHA1, SHA256, SHA384, SHA512, MD5 e RIPEMD160. SHA256 é o algoritmo padrão do Get-FileHash em algumas versões do PowerShell, mas é recomendável especificá-lo explicitamente para clareza.

Para cenários em que você precisa fazer hash de uma string em vez de um arquivo, ou quando deseja mais controle sobre o processo de hash, o PowerShell pode chamar a classe .NET System.Security.Cryptography.SHA256 diretamente. Esse método também dispensa módulos, pois as classes .NET fazem parte da biblioteca base do Windows.

Passos para Calcular o Hash SHA-256 Usando Get-FileHash

O cmdlet Get-FileHash é a forma mais simples e confiável de calcular o hash SHA-256 de um arquivo. Siga estes passos.

  1. Abra o PowerShell como Administrador ou Usuário Padrão
    Pressione a tecla Windows, digite PowerShell e selecione Windows PowerShell ou PowerShell 7. Você não precisa de privilégios de administrador para calcular o hash de arquivos que pode ler.
  2. Navegue até o Diretório do Arquivo (Opcional)
    Use o comando cd para mudar para a pasta que contém o arquivo. Por exemplo: cd C:\Users\SeuNome\Downloads. Essa etapa simplifica o caminho do arquivo no próximo comando.
  3. Execute Get-FileHash com o Algoritmo SHA256
    Digite o seguinte comando e pressione Enter:
    Get-FileHash -Algorithm SHA256 -Path "arquivo.exe"
    Substitua arquivo.exe pelo nome real do arquivo. Se o arquivo não estiver no diretório atual, forneça o caminho completo: C:\Caminho\Para\arquivo.iso.
  4. Leia a Saída
    O PowerShell exibe três colunas: Algorithm mostra SHA256, Hash mostra a string hexadecimal de 64 caracteres e Path mostra o caminho do arquivo. Compare o valor do hash com a soma de verificação fornecida pela fonte do arquivo.
  5. Hash de Vários Arquivos de Uma Vez
    Você pode passar vários caminhos de arquivo para o mesmo comando:
    Get-FileHash -Algorithm SHA256 -Path "arquivo1.zip", "arquivo2.zip"
    O PowerShell retorna um hash para cada arquivo em uma linha separada.

ADVERTISEMENT

Passos para Calcular o Hash SHA-256 Usando Classes .NET Sem Get-FileHash

Use este método quando precisar fazer hash de uma string, dados de um stream ou trabalhar em um ambiente onde Get-FileHash não está disponível. A abordagem .NET oferece controle total sobre a entrada e o formato de saída.

  1. Crie um Objeto SHA256
    Digite o seguinte comando para criar uma instância da classe SHA256:
    $sha256 = [System.Security.Cryptography.SHA256]::Create()
    Este comando não requer importação de módulo.
  2. Calcule o Hash de uma String
    Converta a string em bytes, calcule o hash e converta o resultado em hexadecimal:
    $stringBytes = [System.Text.Encoding]::UTF8.GetBytes("SuaString")
    $hashBytes = $sha256.ComputeHash($stringBytes)
    $hashHex = [System.BitConverter]::ToString($hashBytes) -replace '-', ''
    $hashHex
    A variável $hashHex agora contém o hash SHA-256 como uma string hexadecimal de 64 caracteres em maiúsculas.
  3. Calcule o Hash de um Arquivo Usando .NET
    Abra um stream de arquivo e calcule seu hash:
    $stream = [System.IO.File]::OpenRead("C:\Caminho\Para\arquivo.exe")
    $hashBytes = $sha256.ComputeHash($stream)
    $stream.Close()
    $hashHex = [System.BitConverter]::ToString($hashBytes) -replace '-', ''
    $hashHex
    Sempre feche o stream para liberar recursos do sistema.
  4. Descarte o Objeto SHA256
    Após calcular todos os hashes necessários, descarte o objeto:
    $sha256.Dispose()
    Esta etapa libera recursos criptográficos.

Erros Comuns e O que Evitar

PowerShell Mostra um Hash Diferente do Esperado

A causa mais frequente é usar o algoritmo errado. Alguns sites fornecem hashes MD5 ou SHA-1. Verifique se a fonte especifica SHA-256. Além disso, certifique-se de comparar o hash completo de 64 caracteres. Hashes truncados ou parciais não corresponderão.

Comando Get-FileHash Não Encontrado

Esse erro ocorre em versões muito antigas do PowerShell (3.0 ou anteriores). O Windows 11 vem com PowerShell 5.1, que inclui Get-FileHash. Se você estiver usando PowerShell 7, o cmdlet também está presente. Execute $PSVersionTable.PSVersion para verificar sua versão. Se vir versão 3.0 ou inferior, use o método da classe .NET.

Saída do Hash em Maiúsculas ou Minúsculas

O cmdlet Get-FileHash retorna o hash em maiúsculas. O método .NET usando BitConverter também retorna maiúsculas. Muitas fontes de soma de verificação exibem minúsculas. A caixa não afeta o valor do hash. Use .ToLower() para converter, se necessário: $hashHex.ToLower().

Hash de uma String Difere Entre Sistemas

O hash depende da codificação de bytes da string. Sempre especifique a codificação explicitamente. O exemplo acima usa UTF8. Se usar ASCII ou Unicode, o hash será diferente. Corresponda à codificação usada pelo sistema que gerou o hash original.

Caminho do Arquivo Contém Espaços ou Caracteres Especiais

Sempre coloque os caminhos de arquivo entre aspas. O PowerShell interpreta espaços como separadores de argumentos. Use aspas simples 'C:\Meus Arquivos\arquivo.txt' ou aspas duplas "C:\Meus Arquivos\arquivo.txt".

ADVERTISEMENT

Get-FileHash vs Método da Classe .NET: Diferenças de Uso

Item Cmdlet Get-FileHash Classe .NET SHA256
Tipo de entrada Apenas caminho de arquivo Array de bytes, stream ou string
Formato de saída Objeto com Algorithm, Hash, Path Array de bytes bruto
Facilidade de uso Comando único, sem conversão necessária Várias etapas, requer conversão hexadecimal
Exigência de módulo Nenhum (integrado ao PowerShell 5.1+) Nenhum (.NET faz parte do Windows)
Desempenho em arquivos grandes Bom, usa streaming internamente Bom, mas você precisa gerenciar o stream

Use Get-FileHash para verificações rápidas de integridade de arquivos. Use a classe .NET quando precisar fazer hash de strings ou controlar a codificação e o processo de streaming.

Agora você pode calcular hashes SHA-256 no PowerShell no Windows 11 sem importar módulos. Use Get-FileHash -Algorithm SHA256 para arquivos e a classe .NET SHA256 para strings ou cenários avançados. Sempre verifique se o algoritmo e a codificação correspondem à fonte. Para scripts automatizados, considere adicionar -replace '-' ao método .NET para produzir hashes em minúsculas de forma consistente.

ADVERTISEMENT