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 sha256sum
de 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 --status
bandera 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 sha256sum
archivo, 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
-c
La opción puede leer la suma SHA256 de un sha256sum
archivo o de STDIN
. En caso de que no tenga el sha256sum
archivo, utilizando el echo
comando puede proporcionar los mismos detalles contenidos en un sha256sum
archivo.
En caso de que tengas el sha256sum
archivo, puedes usarlo directamente:
sha256sum -c "<sha256sum file name>"
Nota:
Alternativamente, puede utilizar shasum -a 256
en lugar de sha256sum
donde -a
especifica el algoritmo que se utilizará.
Respuesta3
Puede ver que sha256sum --check
toma 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