Generador de hash y comprobador de checksum

Escribe un texto o elige un archivo para obtener sus hashes SHA-256, SHA-512, SHA-384, SHA-1 y MD5. Pega el checksum de una página de descarga y te dirá si el archivo coincide.

Hash de
Se calcula el hash como UTF-8, exactamente como lo escribes. Un salto de línea al final cambia el hash: echo lo añade, printf y echo -n no.
Mostrar como

Escribe un texto o elige un archivo para ver sus hashes.

La misma comprobación en la línea de comandos

shell
# Linux
sha256sum file.iso
# macOS
shasum -a 256 file.iso
# Windows (PowerShell)
Get-FileHash 'file.iso' -Algorithm SHA256

¿Vas a verificar una ISO antes de instalarla en un servidor? Compara servidores por lo que cuestan cada mes. Desde 3,02 € al mes hoy, entre 2243 servidores.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo funciona

Una función hash convierte cualquier cantidad de datos en un valor corto de longitud fija. Si cambias un solo bit de la entrada, el resultado cambia por completo, y con SHA-256 nadie puede encontrar dos entradas distintas con el mismo valor. Por eso las páginas de descarga publican un hash: si tu copia da el mismo, es el mismo archivo, byte a byte.

La página usa la API Web Crypto integrada en tu navegador para SHA-1, SHA-256, SHA-384 y SHA-512, y una pequeña implementación propia de MD5, porque los navegadores no la ofrecen. El texto se procesa como bytes UTF-8. Un archivo se lee en memoria y se procesa allí; no se sube nada. Web Crypto necesita el archivo entero de una vez, así que el límite práctico es de unos cientos de megabytes, según tu dispositivo.

El campo del checksum acepta un hash suelto en mayúsculas o minúsculas, grupos separados por espacios o dos puntos, una línea de la salida de sha256sum, una línea al estilo BSD como SHA256 (file.iso) = …, o Base64. Encuentra el hash dentro de lo que pegues y lo compara con los cinco resultados.

Ejemplo

El texto «abc» (3 bytes, sin salto de línea) tiene el hash SHA-256 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad y el hash MD5 900150983cd24fb0d6963f7d28e17f72, los valores de prueba de FIPS 180-2 y la RFC 1321. Una entrada vacía da el SHA-256 e3b0c442…b855: si ves ese valor en un archivo, el archivo está vacío.

Preguntas

¿Para qué se usa SHA-256?

Para comprobar que unos datos son exactamente lo que deben ser. Las distribuciones de Linux publican las sumas SHA-256 de sus imágenes ISO, los gestores de paquetes comprueban cada paquete con una, Git y Docker nombran el contenido por su hash, y los certificados TLS y las firmas de código se basan en él. No se conoce ninguna forma práctica de encontrar dos entradas con el mismo SHA-256.

¿Es seguro usar MD5?

No para la seguridad. Desde 2004 se pueden crear archivos distintos con el mismo MD5, y desde el malware Flame, en 2012, esas colisiones se han usado en ataques reales. MD5 todavía detecta una descarga dañada por accidente, pero quien pueda cambiar el archivo también puede hacer que coincida. Para cualquier cosa importante, compara SHA-256. SHA-1 está roto de la misma manera desde 2017.

¿Cómo verifico un archivo ISO?

Descarga la ISO y el checksum que publica el proyecto, idealmente desde su propio sitio por HTTPS. Elige aquí el archivo y pega el checksum en el campo: una coincidencia en verde significa que tu copia es idéntica. En un servidor, ejecuta sha256sum sobre el archivo y compara, o sha256sum -c con el archivo SHA256SUMS. Los proyectos que además firman el archivo de checksums permiten comprobar la firma con gpg.

¿Se puede revertir un hash para recuperar el texto?

No. Un hash conserva mucha menos información que la entrada, así que no hay forma de calcular la entrada a partir de él. Aun así, las entradas cortas o comunes se pueden encontrar probando candidatos, y por eso las contraseñas se guardan con funciones lentas y con sal, como bcrypt o Argon2, y no con un SHA-256 o un MD5 simples.

¿Por qué mi hash es distinto del de la línea de comandos?

Normalmente por un salto de línea. echo "text" | sha256sum calcula el hash del texto más un salto de línea; usa echo -n o printf para omitirlo. Los finales de línea de Windows (CR LF) y una marca de orden de bytes (BOM) al principio de un archivo también cambian el resultado. En los archivos, el hash es siempre el de los bytes exactos, así que una coincidencia aquí y en sha256sum significa que es el mismo archivo.