Generador de hash
Genera hashes MD5 y SHA de cualquier texto y compáralos con una suma de comprobación esperada.
Qué hace realmente una función de hash
Una función de hash criptográfica toma una entrada de cualquier tamaño y produce una cadena de bytes de longitud fija: un digest, o «hash». Dale una sola letra o una novela entera y MD5 siempre devuelve 16 bytes, y SHA-256 siempre 32. La misma entrada produce siempre el mismo digest, y cambiar un solo bit en cualquier punto de la entrada cambia aproximadamente la mitad de los bits de salida; por eso dos archivos casi idénticos tienen hashes completamente inconexos.
La propiedad crucial es que la función solo funciona en un sentido. Calcular el hash de un archivo es rápido; recuperar el archivo a partir del hash no es solo lento, sino imposible en principio, porque una salida de longitud fija no puede codificar una entrada ilimitada. Un hash es una huella dactilar, no una copia cifrada: no hay nada que descifrar.
Para qué se usan realmente los hashes
- Verificar descargas: un proyecto publica el SHA-256 de una versión, tú calculas el hash del archivo recibido y, si los digests coinciden, los bytes llegaron intactos.
- Detectar cambios: los sistemas de control de versiones, copia de seguridad y deduplicación comparan hashes en lugar de archivos completos, porque comparar 32 bytes es mucho más barato que comparar gigabytes.
- Subresource Integrity: una página fija el hash en Base64 de un script que carga desde un CDN, y el navegador se niega a ejecutarlo si no coincide.
- Guardar contraseñas, pero con una función lenta diseñada para ello, nunca con un hash simple. Véase más abajo.
Fíjate en lo que tienen en común: el hash es un sustituto compacto de algo más grande, usado para responder «¿es esto lo mismo que esperaba?» sin transmitir ni almacenar la cosa en sí.
MD5 y SHA-1 están rotos: qué significa eso en la práctica
Una función de hash se considera rota en cuanto alguien puede construir una colisión: dos entradas distintas que producen el mismo digest. Las colisiones de MD5 se calculan en hardware corriente desde 2004, y en 2017 el ataque SHAttered produjo dos archivos PDF distintos con un hash SHA-1 idéntico. Por eso ambos algoritmos aparecen marcados en esta herramienta.
La consecuencia práctica es más estrecha que «no los uses nunca». Una colisión significa que un atacante que controle ambos archivos puede hacer que uno malicioso coincida con el digest de otro inofensivo, así que MD5 y SHA-1 ya no pueden demostrar que un archivo no ha sido manipulado por alguien hostil. Siguen siendo perfectamente válidos para detectar corrupción accidental —una descarga truncada, un bit alterado en un disco— y seguirás encontrándolos en sistemas heredados, cabeceras ETag y manifiestos de paquetes antiguos que nadie va a reescribir.
La regla práctica: si la pregunta es «¿se dañó esto en tránsito?», MD5 sirve. Si la pregunta es «¿alguien lo sustituyó a propósito?», usa SHA-256 o algo mejor.
Nunca guardes una contraseña con estos
MD5, SHA-1 e incluso SHA-256 están diseñados para ser rápidos, y la velocidad es justo la propiedad equivocada para almacenar contraseñas. Una GPU moderna calcula miles de millones de hashes SHA-256 por segundo, así que una base de datos robada de contraseñas simplemente hasheadas puede atacarse a enorme escala; y como la misma contraseña produce siempre el mismo digest, las tablas precalculadas lo abaratan aún más.
El almacenamiento de contraseñas necesita una función deliberadamente lenta, con sal y exigente en memoria: Argon2id, scrypt o bcrypt. Añaden una sal aleatoria única por contraseña, de modo que contraseñas idénticas no comparten digest, y su coste es ajustable, así que cada intento le cuesta al atacante tiempo y memoria reales. Esta herramienta es para sumas de comprobación y huellas, no para almacenar contraseñas.
Leer y comparar digests
El mismo digest puede escribirse de más de una forma. El hexadecimal en minúsculas es lo que imprimen las herramientas estándar de línea de comandos, y suele ser aquello contra lo que compararás:
md5sum file.iso # Linux sha256sum file.iso # Linux shasum -a 256 file.iso # macOS Get-FileHash file.iso -Algorithm SHA256 # PowerShell (imprime en mayúsculas) certutil -hashfile file.iso SHA256 # Windows (imprime en mayúsculas)
En hexadecimal las mayúsculas no significan nada: PowerShell y certutil imprimen en mayúsculas, las herramientas Unix en minúsculas, y es exactamente el mismo valor. Por eso la caja de comparación de esta herramienta ignora las mayúsculas en hexadecimal. Con Base64 la cosa cambia: es una codificación más densa de los mismos bytes, usada por Subresource Integrity y por varias APIs, y ahí las mayúsculas sí importan, así que la comparación es exacta.
Un último hábito que conviene adquirir: nunca compares dos digests largos a ojo para decidir si coinciden. El ojo humano es muy bueno viendo lo que espera ver, y que coincidan los primeros y últimos caracteres no significa nada. Pega el valor esperado y deja que la comparación sea exacta.
Preguntas frecuentes
- ¿Se envía mi texto a un servidor?
- No. Cada digest se calcula en tu navegador: la familia SHA mediante la Web Crypto API y MD5 mediante JavaScript ejecutándose en tu propia máquina. Nada de lo que escribas sale de tu dispositivo.
- ¿Se puede revertir un hash para recuperar el texto original?
- No. Un hash es una huella de longitud fija, no una copia cifrada, y el original no puede recuperarse a partir de él. Los sitios que anuncian «descifrado MD5» simplemente buscan tu hash en una tabla de entradas comunes ya calculadas, lo que solo funciona con texto corto o predecible.
- ¿Por qué MD5 y SHA-1 llevan aquí una advertencia?
- Porque en ambos las colisiones son practicables: pueden construirse dos entradas distintas que compartan digest. Eso los hace inadecuados para demostrar que un archivo no ha sido manipulado a propósito, aunque siguen sirviendo para detectar corrupción accidental.
- ¿Qué algoritmo debería usar?
- SHA-256 es la opción por defecto sensata y lo que publican hoy la mayoría de los proyectos. SHA-512 no es apreciablemente más seguro para esto, pero es más rápido en hardware de 64 bits. Usa MD5 o SHA-1 solo cuando algo que no controlas ya los exija.
- ¿Puedo hashear una contraseña con esto?
- Puedes, pero no deberías guardar el resultado. El almacenamiento de contraseñas necesita una función lenta y con sal como Argon2id, scrypt o bcrypt: los hashes rápidos como estos son precisamente lo que hace fáciles de descifrar las bases de datos robadas.
- ¿Por qué cambian los hashes si añado un espacio o un salto de línea?
- Porque el espacio en blanco forma parte de la entrada. Un salto de línea final es el motivo más común de que un hash no coincida con lo esperado: el texto copiado de una terminal o un editor suele arrastrar uno que no se ve.
- ¿Trata correctamente el hebreo, el árabe y los emoji?
- Sí. El texto se codifica como bytes UTF-8 antes de hashear, que es el estándar que usan las demás herramientas, así que hashear «שלום» o un emoji aquí da el mismo digest que md5sum o sha256sum sobre un archivo UTF-8 con esos mismos caracteres.
- ¿Por qué procesa texto pero no archivos?
- Web Crypto no tiene una API de digest en flujo, así que un archivo debe leerse entero en memoria antes de poder hashearlo, y el MD5 escrito a mano sería notablemente lento con uno grande. Procesar texto cubre el caso común con honestidad, en vez de ofrecer un hasheo de archivos que bloquea la página.