¿Cómo tomar sha256sum del archivo y compararlo para verificarlo en una línea?

¿Cómo tomar sha256sum del archivo y compararlo para verificarlo en una línea?

Sigo queriendo descargar y verificar la integridad de la descarga inmediatamente en un script, pero no he podido encontrar el encantamiento correcto sha256sum.

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

¿Cómo puedo tomar el archivo sha256sumde un archivo nuevo y compararlo con un hash conocido inmediatamente?

Respuesta1

He descargado un archivo comprimido y un archivo de suma de comprobación adjunto. Así es como verifico que el hash del archivo descargado coincida con el hash del archivo de suma de comprobación descargado:

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

La --statusbandera evita todas las salidas estándar (más efectiva que --quiet). Luego necesito confiar en el código de retorno para determinar si coinciden, que es lo que quiero de todos modos ya que voy a usar esto en un script.

Respuesta2

Ejemplo:

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

En caso de que tengas el sha256sumarchivo, puedes usarlo directamente:

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

Explicación:

En el ejemplo anterior, tienes

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

sha256sum -cLa opción puede leer la suma SHA256 de un sha256sumarchivo o de STDIN. En caso de que no tenga el sha256sumarchivo, utilizando el echocomando puede proporcionar los mismos detalles contenidos en un sha256sumarchivo.

En caso de que tengas el sha256sumarchivo, puedes usarlo directamente:

sha256sum -c "<sha256sum file name>"

Nota:

Alternativamente, puede utilizar shasum -a 256en lugar de sha256sumdonde -aespecifica el algoritmo que se utilizará.

Respuesta3

Puede ver que sha256sum --checktoma el resultado de una ejecución anterior (normal) de sha256sum: toma hashes y nombres de archivos a través de stdin y los compara con archivos reales.

Entonces, lo obvio es darle manualmente la salida en el formato que desee:

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

Respuesta4

Si tiene el archivo de suma de comprobación, simplemente puede hacer un archivo sha256sum --check. Por ejemplo:

% 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

información relacionada