Gostaria de calcular uma soma de verificação MD5 de algum conteúdo. Como faço isso no PowerShell?
powershell
powershell-2.0
Luke101
fonte
fonte
Respostas:
Se o conteúdo for uma sequência:
Se o conteúdo for um arquivo:
A partir do PowerShell versão 4, é fácil fazer isso com arquivos prontos para uso com o
Get-FileHash
cmdlet:Isso certamente é preferível, pois evita os problemas que a primeira solução oferece, conforme identificado nos comentários (usa um fluxo, fecha e suporta arquivos grandes).
fonte
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."
Como um cara do Linux novato no Powershell, estou muito irritado com as lutas que estou tendo em obter uma soma md5, que seria simplesmentemd5sum file.ext
no Linux.$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)))
isso oferece baixo uso de memória e nenhum limite de 2 GB .$stream = [System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
em seguida,$hash = [System.BitConverter]::ToString($md5.ComputeHash($stream))
em seguida,$stream.Close()
Se você estiver usando as Extensões da comunidade do PowerShell, há um comando Get-Hash que fará isso facilmente:
fonte
Get-FileHash
no vanilla PowerShell 4.0. Vide TechNet .Aqui estão as duas linhas, basta alterar "olá" na linha 2:
fonte
Aqui está uma função que eu uso que lida com caminhos relativos e absolutos:
Agradecemos a @davor acima pela sugestão de usar Open () em vez de ReadAllBytes () e a @ jpmc26 pela sugestão de usar um bloco finalmente.
fonte
Dispose
chamada deve estar em umfinally
bloco.Outro comando interno que há muito tempo é instalado no Windows por padrão desde 2003 é o Certutil , que também pode ser chamado pelo PowerShell.
(Advertência: MD5 deve estar em maiúsculas para máxima robustez)
fonte
FipsAlgorithmPolicy
está ativada.Existem muitos exemplos online usando o ComputeHash (). Meus testes mostraram que isso era muito lento ao executar uma conexão de rede. O trecho abaixo é muito mais rápido para mim, no entanto, sua milhagem pode variar:
fonte
write-progress
linha faz? O marcador de sintaxe não parece gostar.Este site tem um exemplo: Usando o PowerShell para MD5 Checksums . Ele usa a estrutura .NET para instanciar uma instância do algoritmo de hash MD5 para calcular o hash.
Aqui está o código do artigo, incorporando o comentário de Stephen:
fonte
Conforme declarado na resposta aceita,
Get-FileHash
é fácil usar com arquivos, mas também é possível usá-lo com strings:fonte
Agora existe uma função Get-FileHash que é muito útil.
Apenas mude
SHA384
paraMD5
.O exemplo é da documentação oficial do PowerShell 5.1 . A documentação tem mais exemplos.
fonte
Isso se tornará uma linha única se você baixar o FCIV (File Checksum Integrity Verifier) da Microsoft.
Fiz o download do FCIV a partir daqui: Disponibilidade e descrição do utilitário File Checksum Integrity Verifier
Execute o seguinte comando. Eu tinha dez arquivos para verificar.
fonte
Linhas de alinhamento do PowerShell (seqüência de caracteres para hash)
MD5
SHA1
SHA256
SHA384
SHA512
fonte
Isso retornará um hash MD5 para um arquivo em um computador remoto:
fonte
Exemplo de opção de menu com o botão direito do mouse também:
fonte
Aqui está um exemplo bonito de impressão tentando verificar a impressão digital SHA256. Fiz o download do gpg4win v3.0.3 usando o PowerShell v4 (requer
Get-FileHash
).Faça o download do pacote em https://www.gpg4win.org/download.html , abra o PowerShell, pegue o hash na página de download e execute:
Resultado:
fonte
Aqui está um exemplo de comando de uma linha com ambos computando a soma de verificação adequada do arquivo , como você acabou de baixar, e a compara com a soma de verificação publicada do original.
Por exemplo, escrevi um exemplo para downloads do projeto Apache JMeter . Nesse caso, você tem:
Em seguida, usando este comando do PowerShell, você pode verificar a integridade do arquivo baixado:
Resultado:
Explicação:
O primeiro operando do
-eq
operador é o resultado da computação da soma de verificação para o arquivo:O segundo operando é o valor publicado da soma de verificação. Primeiramente, obtemos o conteúdo do arquivo.md5, que é uma string e, em seguida, extraímos o valor do hash com base no formato da string:
O arquivo e o arquivo.md5 devem estar na mesma pasta para este comando funcionar.
fonte
Isto é o que eu uso para obter um valor de hash consistente:
fonte
Aqui está o trecho que estou usando para obter o MD5 para uma determinada sequência:
fonte