sha256sum -c SHA256SUMS comprueba todos los archivos listados en el fichero de sumas e imprime OK o FAILED para cada uno, sin comparar cadenas hexadecimales a ojo. Eso demuestra que la descarga llegó entera. No demuestra que la versión sea auténtica: para eso se verifica la firma del propio fichero de sumas.
1. Comprueba todo lo descargado
$ clai verifica las sumas de los archivos descargados→ sha256sum -c SHA256SUMSapp-1.2.0-darwin-arm64.tar.gz: OKapp-1.2.0-linux-amd64.tar.gz: OKapp-1.2.0-linux-arm64.tar.gz: OK
SHA256SUMS es un fichero de texto con líneas de "hash, dos espacios, nombre" que los proyectos publican junto a la versión. -c hace la comparación por su cuenta, que es justamente el objetivo.
2. Solo descargaste uno de los archivos
$ clai verifica solo el archivo que tengo→ sha256sum -c --ignore-missing SHA256SUMSapp-1.2.0-linux-amd64.tar.gz: OK
Sin --ignore-missing, la comprobación se queja de cada archivo ausente con FAILED open or read y sale con código 1 aunque el tuyo esté perfecto. Es el motivo más común de creer que la verificación falló.
3. Cómo se ve un fallo de verdad
$ clai verifica el archivo tras una descarga cortada→ sha256sum -c --ignore-missing SHA256SUMSapp-1.2.0-linux-amd64.tar.gz: FAILEDsha256sum: WARNING: 1 computed checksum did NOT matchsha256sum: SHA256SUMS: no file was verified
Verificado cambiando un solo byte del archivo. El código de salida es 1, que es lo que debe mirar un script. FAILED significa "archivo equivocado"; FAILED open or read significa "no hay archivo": problemas distintos.
4. Un solo hash, sin fichero de sumas
$ clai compara el archivo con el hash de la página de descarga→ echo "<hash> app-1.2.0-linux-arm64.tar.gz" | sha256sum -c -app-1.2.0-linux-arm64.tar.gz: OK
Los dos espacios entre el hash y el nombre son parte del formato, no tipografía. Así se comprueba cuando el sitio publica un hash suelto en vez de un fichero de sumas.
5. La firma importa más que el hash
$ clai verifica la firma del fichero de sumas→ gpg --verify SHA256SUMS.asc SHA256SUMSgpg: Signature made Thu Aug 27 23:09:38 2026 +07gpg: using EDDSA key CDDC16ABE7FBF699F0CA9D6C7CA6166B006AB9B0gpg: Good signature from "App Releases <[email protected]>" [ultimate]
Es la parte que casi todas las guías se saltan. Un hash demuestra que los bytes llegaron enteros, no que la versión venga de su autor: quien sustituya el archivo y también SHA256SUMS obtendrá hashes que cuadran. La firma no sobrevive a eso: cambia un carácter del fichero de sumas y gpg responde BAD signature from "App Releases <releases@example.com>", probado.
6. Cuando no tienes la clave
$ clai verifica la firma sin la clave del proyecto→ gpg --verify SHA256SUMS.asc SHA256SUMSgpg: Signature made Thu Aug 27 23:09:38 2026 +07gpg: using EDDSA key CDDC16ABE7FBF699F0CA9D6C7CA6166B006AB9B0gpg: Can't check signature: No public key
Eso no es "firma incorrecta", es "no tengo con qué comprobarla". Trae la clave con gpg --recv-keys <huella>, y toma la huella de un sitio distinto del que descargaste el archivo, o la comprobación se estará verificando a sí misma.
Gotchas
FAILEDyFAILED open or readson problemas distintos. El primero dice que el archivo está corrupto o cambiado; el segundo, que no está en el directorio.--ignore-missingsolo resuelve el segundo.- Un hash que cuadra no es autenticidad. Los hashes protegen de una descarga truncada, no de una versión sustituida. La autenticidad exige un fichero de sumas firmado y una clave obtenida al margen de la página de descarga.
- El formato de línea es estricto. Exactamente dos espacios entre hash y nombre; con uno solo o con un tabulador obtendrás
no properly formatted checksum lines found.
Related questions
¿En qué se diferencia sha256sum de md5sum? En el algoritmo. MD5 lleva años roto frente a colisiones, así que no sirve para autenticidad; aún detecta una descarga corrupta, pero no hay motivo para preferirlo.
¿Cómo compruebo un hash en Windows? certutil -hashfile app.tar.gz SHA256 en cmd, o Get-FileHash en PowerShell. Otro formato, mismo valor.
¿Qué hago si las sumas no coinciden? Descargar de nuevo: lo habitual es una transferencia cortada. Si falla dos veces, cambia de mirror y verifica la firma antes de fiarte de nada.
See also
- Reanudar una descarga interrumpida con curl
- Partir un archivo grande y volver a unirlo
- Extraer cualquier archivo comprimido
CliAI escribe la línea de verificación —con el flag para el caso de un solo archivo— y la muestra antes de ejecutarla. Instálalo en una línea.