Toolbit

Generador de hash (MD5, SHA-1, SHA-256, SHA-512)

Calcula MD5, SHA-1, SHA-256, SHA-384 y SHA-512 de un texto o un archivo, con HMAC opcional, y compara el resultado con un checksum publicado.

Qué es una función hash

Una función hash criptográfica toma una entrada de cualquier tamaño (una palabra, un documento, una imagen de disco de varios gigas) y produce un resultado de longitud fija, llamado resumen, digest o simplemente hash. SHA-256, por ejemplo, siempre devuelve 256 bits, que se escriben como 64 dígitos hexadecimales. Para que sea útil en seguridad, la función tiene que cumplir cuatro propiedades:

  • Determinista: la misma entrada produce siempre el mismo hash, en cualquier equipo y en cualquier lenguaje.
  • Efecto avalancha: un cambio mínimo en la entrada cambia el resultado por completo. Hola, mundo y Hola, mundo. (con un punto final) dan hashes SHA-256 sin ninguna relación visible entre sí.
  • Unidireccional: a partir del hash no hay forma práctica de reconstruir la entrada; solo se puede probar entradas hasta dar con una que coincida.
  • Resistente a colisiones: tiene que ser inviable encontrar dos entradas distintas con el mismo hash.

Esa última propiedad es la que separa a los algoritmos actuales de los obsoletos.

Los algoritmos y su estado

AlgoritmoTamañoDígitos hexEstado
MD5128 bits32Roto: colisiones prácticas desde 2004
SHA-1160 bits40Roto: primera colisión pública en 2017 (SHAttered)
SHA-256256 bits64Seguro; el estándar de facto actual
SHA-384384 bits96Seguro; variante truncada de SHA-512
SHA-512512 bits128Seguro; suele ser más rápido que SHA-256 en CPU de 64 bits

"Roto" significa que se pueden fabricar dos entradas distintas con el mismo hash. MD5 y SHA-1 siguen sirviendo para detectar errores accidentales (una descarga corrupta, un archivo duplicado), pero no para nada en lo que un atacante pueda elegir el contenido: firmas digitales, certificados o verificación de software frente a manipulación. La herramienta los marca como inseguros por esa razón. La historia de esas roturas y qué usar en cada caso están en la guía MD5, SHA-256 y bcrypt: qué función hash usar para cada cosa.

Cómo usar la herramienta

  • Texto: el texto se convierte a bytes con UTF-8 antes de calcular el hash, igual que hacen sha256sum, Python o Node.js. Por eso ñ da el mismo resultado aquí que en cualquier otro sistema moderno.
  • Archivo: elige un archivo del equipo y se calculan los cinco hashes. El archivo se lee completo en la memoria del navegador, nunca se sube a un servidor, y el cálculo funciona sin conexión una vez cargada la página.
  • Hash esperado: pega el checksum que publica el sitio de descarga y la herramienta indica con qué algoritmo coincide. Acepta mayúsculas, el prefijo sha256: y la línea completa de un archivo SHA256SUMS (hash seguido del nombre de archivo).
  • Clave HMAC: si se escribe una clave, en lugar del hash simple se calcula un HMAC (RFC 2104), que combina la clave con el contenido. Es lo que usan los webhooks y muchas APIs para firmar mensajes. HMAC-MD5 no está disponible porque la API criptográfica de los navegadores no lo soporta.

Verificar una descarga, paso a paso

  1. En la página de descarga, copia el hash SHA-256 publicado para el archivo (a veces en un archivo aparte llamado SHA256SUMS o .sha256).
  2. Elige el archivo descargado en la herramienta y pega el hash en "Hash esperado".
  3. Si coincide, el archivo es idéntico bit a bit al que publicó el sitio. Si no coincide, la descarga está corrupta o el archivo no es el mismo, y no conviene usarlo.

Un detalle importante: el checksum solo protege tanto como el canal por el que se obtuvo. Si el atacante controla el servidor de descargas, puede cambiar el archivo y el checksum a la vez. Por eso los proyectos serios firman además el archivo de checksums con GPG o publican el hash por un canal distinto.

El mismo cálculo desde la terminal:

SistemaComando
Linuxsha256sum archivo.iso
macOSshasum -a 256 archivo.iso
Windows (cmd)certutil -hashfile archivo.iso SHA256
Windows (PowerShell)Get-FileHash archivo.iso -Algorithm SHA256

Para qué no sirve un hash rápido

MD5, SHA-1 y la familia SHA-2 están diseñados para ser rápidos: una GPU moderna calcula decenas de miles de millones de hashes SHA-256 por segundo. Esa velocidad es una virtud al verificar archivos y un defecto grave al guardar contraseñas. Si una base de datos guarda SHA-256(contraseña) y se filtra, un atacante puede probar diccionarios enteros en minutos. Las contraseñas se guardan con funciones lentas, con sal y costo configurable, como Argon2id, scrypt o bcrypt. La guía de hashes explica por qué, y la de Cómo crear contraseñas seguras: la entropía explicada cubre el otro lado del problema: cuánta entropía necesita la contraseña.

Privacidad

Los hashes se calculan en el navegador con la Web Crypto API (SHA) y con una implementación propia del RFC 1321 (MD5), verificada con los vectores de prueba oficiales. Ni el texto, ni los archivos, ni la clave HMAC salen del equipo.

Preguntas frecuentes

¿Se puede revertir un hash para obtener el texto original?

No directamente: las funciones hash son unidireccionales. Lo que sí se puede es adivinar: si la entrada es corta o común (una contraseña frecuente, un número de teléfono), un atacante calcula el hash de millones de candidatos por segundo hasta dar con uno igual. Por eso un hash rápido como SHA-256 no protege datos predecibles, y las contraseñas se guardan con funciones lentas como Argon2id o bcrypt.

¿Por qué el hash de un archivo no coincide con el publicado?

Las causas más comunes son una descarga incompleta o corrupta, una versión distinta del archivo, o comparar contra el hash de otro algoritmo (un SHA-1 tiene 40 dígitos y un SHA-256, 64). Si se calcula el hash de un texto, otra causa típica es un salto de línea o un espacio extra al final, que cambia el resultado por completo.

¿Qué diferencia hay entre un hash y un HMAC?

Un hash solo depende del contenido, así que cualquiera puede recalcularlo. Un HMAC combina el contenido con una clave secreta: solo quien conoce la clave puede generarlo o verificarlo. Por eso se usa para firmar mensajes entre sistemas, como los webhooks, donde el receptor necesita saber que el mensaje no fue modificado y que viene de quien tiene la clave.