Seguridad

Generador de hash MD5 / SHA

Calculá hashes MD5, SHA-1, SHA-256 y SHA-512 a partir de cualquier texto. Útil para verificar integridad, comparar archivos o generar checksums.

Qué es una función de hash

Una función de hash toma una entrada de cualquier tamaño y devuelve una cadena de tamaño fijo. Para la misma entrada, siempre devuelve el mismo resultado. Cambiar un solo bit de la entrada cambia drásticamente la salida (efecto avalancha). Esa propiedad las hace útiles como huellas digitales: si dos hashes coinciden, los datos son los mismos.

Las funciones criptográficas también son resistentes a inversión: dado un hash, es computacionalmente imposible deducir la entrada. Y a colisiones: encontrar dos entradas distintas que produzcan el mismo hash es muy difícil... cuando la función no está rota.

MD5, SHA-1, SHA-256 y SHA-512

  • MD5 (1991, 128 bits). Roto desde 2004 para resistencia a colisiones. Útil solo para checksums no-adversariales.
  • SHA-1 (1995, 160 bits). Roto en 2017 (ataque SHAttered). Google y Microsoft lo retiraron de TLS. No usar para firmas.
  • SHA-256 (2001, 256 bits). Parte de la familia SHA-2. Sigue siendo seguro y es el estándar actual en TLS, Bitcoin, Git desde 2018, certificados SSL y firmas digitales.
  • SHA-512 (2001, 512 bits). Misma familia que SHA-256 pero con bloques de 1024 bits. Más rápido en hardware de 64 bits y útil cuando necesitás más espacio de hash.

Casos de uso correctos

  1. Verificar descargas. Cuando un sitio publica el SHA-256 de un instalador, podés calcularlo localmente y comparar.
  2. Integridad de archivos. Detectar corrupción en transferencias, copias de seguridad y discos.
  3. Indexación y deduplicación. Almacenes como S3 o Git usan hashes para identificar contenido idéntico sin comparar bytes.
  4. Pruebas de existencia. Publicar el hash de un documento sirve como timestamp criptográfico.
  5. Identificadores derivados. Un hash determinístico genera un ID estable a partir de campos de entrada.

Cuándo NO usar estos hashes

Estas funciones son rápidas. Eso es bueno para verificación, pero terrible para contraseñas: un atacante puede probar miles de millones por segundo. Para passwords usá funciones lentas y con sal:

  • bcrypt: estándar histórico, factor de costo configurable. Usá Genfy /generador-bcrypt.
  • argon2id: ganador del Password Hashing Competition (2015). Resistente a GPU/ASIC.
  • scrypt: también resistente a hardware especializado.

Tampoco uses MD5 ni SHA-1 para nada que requiera resistencia a colisiones (firmas, certificados, integridad adversarial). Para todo eso, SHA-256 mínimo.

Cómo se calculan los hashes acá

SHA-1, SHA-256 y SHA-512 los calcula la Web Crypto API del navegador (crypto.subtle.digest), implementación nativa estándar y rápida. MD5 no está en Web Crypto (justamente porque está deprecado para crypto), así que se calcula en JavaScript puro. Todo ocurre en tu equipo, sin enviar nada.

Ejemplo práctico: verificar un instalador

Cuando descargás Node.js o Python desde el sitio oficial, suele aparecer el SHA-256 al lado del link. El proceso correcto:

  1. Bajá el archivo del sitio oficial (no de un mirror desconocido).
  2. Abrí una terminal y corré shasum -a 256 archivo.dmg (Mac/Linux) o certutil -hashfile archivo.exe SHA256 (Windows).
  3. Compará el resultado con el publicado. Si coincide, el archivo no fue alterado.

Para textos cortos podés usar este generador. Para archivos grandes, conviene la herramienta de línea de comandos.

Preguntas frecuentes

¿Qué es un hash?

Una huella digital de tamaño fijo de cualquier dato. Se usa para verificar integridad, indexar contenido y detectar duplicados.

¿MD5 sigue siendo seguro?

No para crypto. MD5 y SHA-1 están rotos para resistencia a colisiones. Sirven para checksums no-críticos.

¿Cuál uso para contraseñas?

Ninguno de estos. Usá bcrypt, argon2id o scrypt. Los hashes rápidos como SHA-256 se rompen demasiado rápido aplicados a passwords.

¿Mi texto se envía a algún servidor?

No. Todo se calcula con Web Crypto API en tu navegador. Nada sale de tu equipo.