Guía

Cómo verificar un SHA-256 en Windows, macOS o Linux

Verifica el SHA-256 de un archivo con PowerShell, shasum o sha256sum y entiende qué demuestra una coincidencia y qué no puede demostrar.

por Tools in a Tab · Publicado el · Actualizada

Respuesta breve

Para verificar un SHA-256, calcula el hash del archivo con Get-FileHash en Windows, shasum -a 256 en macOS o sha256sum en Linux. Compara los 64 caracteres hexadecimales con un checksum obtenido de una fuente fiable. Si coinciden, los bytes concuerdan con esa referencia; la coincidencia no demuestra por sí sola quién publicó el archivo.

Ejemplo reproducible con texto

El texto ASCII abc, sin salto de línea al final, produce:

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

El digest tiene 64 caracteres hexadecimales, es decir, 256 bits. Puedes comprobar el vector en el generador SHA-256, que convierte texto UTF-8 localmente en el navegador.

Un espacio, una mayúscula o un salto de línea produce otro resultado. Si una comparación falla, verifica primero qué bytes entraron realmente: copiar texto desde una terminal o un editor puede añadir un final de línea invisible.

Verificar un archivo pequeño en el navegador

Para un archivo de hasta 20 MiB (20.971.520 bytes), abre el verificador SHA-256 de archivos, que abre el modo Archivo, elige la descarga y pega el hash fiable en SHA-256 esperado. Pulsa Calcular SHA-256 para leer los bytes originales localmente y comparar los 64 dígitos. La herramienta no sube nada. No pegues un archivo binario en modo Texto.

Web Crypto necesita la entrada completa en memoria. Para archivos mayores, utiliza uno de los comandos del sistema siguientes. Una coincidencia sigue sin demostrar que el archivo sea seguro.

Verificar SHA-256 en Windows con PowerShell

Abre PowerShell en la carpeta que contiene la descarga y ejecuta:

Get-FileHash -LiteralPath '.\archivo.zip' -Algorithm SHA256

PowerShell muestra el algoritmo, el hash de 64 caracteres y la ruta. La documentación de Get-FileHash confirma que SHA-256 es el valor predeterminado, pero escribir -Algorithm SHA256 deja el comando explícito y fácil de revisar.

Verificar SHA-256 en macOS

Abre Terminal, entra en la carpeta del archivo y ejecuta:

shasum -a 256 archivo.zip

La opción -a 256 es importante porque shasum sin ella usa SHA-1 de forma predeterminada. El manual de shasum documenta la selección del algoritmo y el modo de comprobación.

Verificar SHA-256 en Linux

En un sistema con GNU coreutils, ejecuta:

sha256sum archivo.zip

GNU también documenta cksum -a sha2 -l 256 archivo.zip como interfaz general más reciente. El conocido sha256sum sigue siendo un comando directo para SHA-256; ambos aparecen en el manual de GNU Coreutils.

Comprobar automáticamente un archivo SHA256SUMS

Si el publicador ofrece un archivo SHA256SUMS fiable, sha256sum -c lee sus hashes esperados y nombres de archivo y comprueba los archivos enumerados. No pases el ZIP o la ISO descargada a -c: esa opción espera una lista de checksums, no los datos sobre los que calcular el hash.

Ejecuta la comprobación desde el directorio que contiene los archivos nombrados en la lista. Sustituye esta ruta de ejemplo por tu carpeta de descargas:

(cd '/ruta/a/descargas' && sha256sum -c SHA256SUMS)

En macOS, el equivalente con shasum es:

(cd '/ruta/a/descargas' && shasum -a 256 -c SHA256SUMS)

Por qué puede fallar una ruta absoluta a la lista

sha256sum -c /ruta/a/descargas/SHA256SUMS localiza la lista, pero no cambia el directorio de trabajo. Una entrada relativa como archivo.zip se resuelve desde el directorio actual, no desde la carpeta que contiene SHA256SUMS. Los comandos entre paréntesis cambian de carpeta solo para esa comprobación.

Una ruta absoluta dentro de la lista se usa tal como está escrita; cambiar de carpeta no la reubica. Revisa las rutas y conserva la estructura prevista por el publicador. En los comandos de shell, entrecomilla las rutas con espacios. No añadas esas comillas a los nombres dentro de la lista: pasarían a formar parte del nombre del archivo.

Reproducir una comprobación con tres bytes

En un directorio de pruebas vacío, crea un archivo que contenga exactamente abc, sin salto de línea:

printf 'abc' > 'sample file.txt'

Guarda esta única línea como SHA256SUMS, con dos espacios entre el hash y sample file.txt, y un salto de línea al final:

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad  sample file.txt

Ejecuta sha256sum -c SHA256SUMS (o shasum -a 256 -c SHA256SUMS). El resultado es sample file.txt: OK. Si añades un salto de línea al archivo de datos, la comparación falla. Este ejemplo demuestra el procedimiento: generar un hash nuevo de una descarga no fiable no crea una referencia fiable para ella.

Entender los fallos antes de repetir

  • OK: este archivo coincide con su digest de la lista. Confirma que la lista procede de una fuente fiable.
  • FAILED: los bytes no coinciden. Revisa la versión, descarga completa y hash esperado; no sustituyas el hash de referencia para que pase.
  • No such file or directory: no se pudo abrir un archivo en esa ruta. Comprueba el directorio actual y el nombre, incluidos sus espacios.
  • no properly formatted checksum lines found: la entrada no es una lista de checksums utilizable. Busca un hash sin nombre de archivo, HTML copiado o un archivo equivocado.

En scripts, usa el código de salida: 0 indica éxito y un valor distinto indica fallo. En GNU, --strict también hace fallar las líneas mal formadas cuando la lista contiene otras entradas válidas. Evita --ignore-missing al comprobar una descarga completa y no interpretes una sola línea OK como prueba de que todos los archivos pasaron. Las opciones de GNU para checksums documentan estos controles. El texto de los errores puede variar según la implementación y el idioma.

Comparar el resultado completo

Compara los 64 caracteres sin modificar el archivo. Las mayúsculas del texto hexadecimal no cambian el valor, pero cualquier diferencia en un dígito sí. No compares solo el principio o el final ni pegues un archivo binario en un generador de texto: la codificación o la conversión de finales de línea producirían bytes distintos.

Integridad no es autenticidad

SHA-256 forma parte del estándar FIPS 180-4 de NIST y permite detectar cambios al comparar digests. Para que la comprobación tenga valor, el hash esperado debe llegar por un canal de confianza: una página HTTPS oficial, una firma digital verificable o un manifiesto autenticado.

Si el archivo y el checksum proceden del mismo lugar comprometido, la comparación solo confirma que coinciden entre sí. No identifica al autor ni certifica que el contenido sea seguro.

Procedimiento breve

  1. Obtén el checksum desde la fuente oficial y conserva sus 64 caracteres.
  2. Calcula SHA-256 sobre el archivo exacto, sin abrirlo ni convertirlo.
  3. Compara todo el digest, no solo el principio o el final.
  4. Si no coincide, no uses el archivo: vuelve a descargarlo desde una fuente conocida e investiga la diferencia.
  5. Si necesitas autenticar al publicador, verifica además su firma digital.

Así separas dos preguntas distintas: «¿son los mismos bytes?» y «¿puedo confiar en quién los distribuye?».