Como pegar o sha256sum do arquivo e comparar para verificar em uma linha?

Como pegar o sha256sum do arquivo e comparar para verificar em uma linha?

Continuo querendo fazer o download e verificar a integridade do download imediatamente em um script, mas não consegui encontrar o encantamento correto de sha256sum.

MY_SHA256=e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5
sha256sum some_binary | sha256sum --check ${MY_SHA256}

Como posso pegar sha256sumum novo arquivo e compará-lo com um hash conhecido imediatamente?

Responder1

Baixei um arquivo compactado e um arquivo de soma de verificação que o acompanha. Veja como verifico se o hash do arquivo baixado corresponde ao hash do arquivo de soma de verificação baixado:

echo "$(cat archive.tar.gz.sha256) archive.tar.gz" | sha256sum --check --status

O --statussinalizador impede todas as saídas stdout (mais eficazes que --quiet). Em seguida, preciso confiar no código de retorno para determinar se eles correspondem, o que é o que eu quero, já que usarei isso em um script.

Responder2

Exemplo:

 echo "67574ee0039eaf4043a237e7c4b0eb432ca07ebf9c7b2dd0667e83bc3900b2cf kali-linux-2019.2-amd64.iso" | sha256sum -c

Caso você tenha o sha256sumarquivo, você pode usá-lo diretamente:

sha256sum -c "kali-linux-2019.2-amd64.iso.txt.sha256sum"

Explicação:

No exemplo acima, você tem

echo "<known SHA 256 sum of the file> <name of the file>" | sha256sum -c

sha256sum -cA opção pode ler a soma SHA256 de um sha256sumarquivo ou de um arquivo STDIN. Caso você não tenha o sha256sumarquivo, então usando o echocomando você pode fornecer os mesmos detalhes contidos em um sha256sumarquivo.

Caso você tenha o sha256sumarquivo, você pode usá-lo diretamente:

sha256sum -c "<sha256sum file name>"

Observação:

Alternativamente, você pode usar shasum -a 256em vez de sha256sumonde -aespecifica o algoritmo a ser usado.

Responder3

Você pode ver que sha256sum --checkele obtém a saída de uma execução anterior (normal) do sha256sum: ele pega hashes e nomes de arquivos via stdin e os compara com os arquivos reais.

Portanto, a coisa óbvia a fazer é fornecer manualmente a saída no formato desejado:

$ echo "da39a3ee5e6b4b0d3255bfef95601890afd80709  motd" | sha1sum --check
motd: OK

Responder4

Se você tiver o arquivo de soma de verificação, poderá simplesmente fazer um arquivo sha256sum --check. Por exemplo:

% ls
elasticsearch-7.9.3-darwin-x86_64.tar.gz           # File to check
elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512    # Checksum file


% sha512sum --check elasticsearch-7.9.3-darwin-x86_64.tar.gz.sha512
elasticsearch-7.9.3-darwin-x86_64.tar.gz: OK

informação relacionada