Seguridad
Generador de hash
MD5, SHA-1, SHA-256, SHA-384 y SHA-512 de un texto o un archivo, calculados en tu navegador.
Qué es y para qué sirve
Un hash es el resultado de meter un texto o un archivo por una función que siempre da la misma huella de longitud fija para la misma entrada, y una completamente distinta si cambia un solo bit. No se puede deshacer: de la huella no se recupera el original, y esa es justo la gracia. Sirve para dos cosas muy distintas que se confunden a menudo: comprobar que un archivo no se ha corrompido ni manipulado (comparando su huella con la que publica quien lo distribuye), y guardar de forma segura una contraseña sin guardar la contraseña.
No todos los algoritmos sirven igual para todo. MD5 y SHA-1 están rotos desde hace años para cualquier cosa que dependa de que nadie pueda fabricar una colisión a propósito —firmar un documento, por ejemplo—, pero siguen siendo perfectamente válidos para lo que se usan sobre todo hoy: comprobar que una descarga ha llegado entera, donde lo único que importa es detectar un error, no defenderse de un atacante. SHA-256 y sus hermanos más largos (SHA-384, SHA-512) sí resisten ataques deliberados, y son los que hay que usar para cualquier cosa con implicaciones de seguridad real.
Esta herramienta calcula los cinco a la vez, tanto de un texto como de un archivo, con MD5 implementado en JavaScript puro y el resto con crypto.subtle, la API criptográfica nativa del navegador. Nada de lo que escribas o subas sale de tu equipo.
Casos de uso
- Comprobar que un archivo descargado coincide con el hash que publica quien lo distribuye, antes de ejecutarlo.
- Verificar que dos copias de un mismo archivo son idénticas byte a byte, sin compararlas entero a entero.
- Generar la huella de un texto para usarla como clave de caché o como identificador corto y estable.
- Comprobar en un examen de sistemas o en una clase por qué MD5 y SHA-1 ya no valen para firmar, viendo cómo cambia el hash con un cambio mínimo.
- Sacar el checksum de un archivo grande para pegarlo en un README o en un release de GitHub.
- Comprobar la firma HMAC que llega en la cabecera de un webhook (GitHub, Stripe y similares) con el secreto configurado.
- Generar un archivo de suma de verificación (.sha256, .md5…) listo para publicar junto a una descarga.
Cómo se usa
- Elige «Texto» y escribe, o «Archivo» y suéltalo (o elígelo con el botón).
- Los cinco hashes se calculan al momento y se ven todos juntos.
- Copia el que necesites, o activa mayúsculas si el sistema al que va a parar las exige.
- Si ya tienes un hash de otro lado (una descarga, un log), pégalo en «Comparar» para saber si coincide.
Qué incluye Generador de hash
- MD5, SHA-1, SHA-256, SHA-384 y SHA-512 calculados a la vez, de texto o de archivo.
- MD5 implementado en JavaScript siguiendo el RFC 1321; el resto sale de crypto.subtle, la API nativa del navegador.
- Salida en hexadecimal (con mayúsculas opcionales) o en Base64.
- Comparador que detecta solo si el valor pegado coincide con alguno de los hashes calculados, sin importar mayúsculas ni espacios.
- HMAC con secreto para los cinco algoritmos, construido igual para todos (incluido MD5, que Web Crypto no soporta de serie para HMAC).
- Descarga de cada hash en un archivo de suma de verificación con el formato de sha256sum/md5sum, listo para publicar.
- Aviso junto a MD5 y SHA-1 de para qué siguen sirviendo y para qué no.
- Todo ocurre en tu navegador: ni el texto ni el archivo se suben a ningún sitio, y funciona sin conexión.
Preguntas frecuentes
- ¿Puedo usar esto para comprobar que una descarga no está corrupta ni manipulada?
- Sí, es justo para lo que sirve. Descarga el archivo, calcula aquí su hash y compáralo con el que publique la web de origen. Si coincide, el archivo ha llegado exactamente igual que se subió.
- ¿Por qué MD5 y SHA-1 si están «rotos»?
- Están rotos para lo que exige que nadie pueda fabricar a propósito dos archivos con el mismo hash, como firmar certificados. Para detectar una corrupción accidental en una descarga, que es su uso más común hoy, siguen funcionando perfectamente: un error de transmisión no fabrica una colisión deliberada.
- ¿Debería usar esto para guardar contraseñas?
- No. Un hash genérico como estos calcula la huella en microsegundos, que es justo lo contrario de lo que hace falta para una contraseña: ahí interesa que probar cada combinación cueste caro, con algoritmos pensados para eso como bcrypt, scrypt o Argon2, con sal incluida. Para generar la propia contraseña, mejor el generador de contraseñas de este sitio.
- ¿Por qué el mismo texto en dos hashes distintos da resultados tan diferentes en longitud?
- Porque cada algoritmo produce una huella de tamaño fijo propio: 128 bits en MD5, 160 en SHA-1, 256 en SHA-256, 384 y 512 en los otros dos. Por eso MD5 siempre se ve más corto que SHA-512, sea cual sea el tamaño de lo que se ha metido.
- ¿Se sube mi archivo a algún servidor para calcular el hash?
- No. El cálculo ocurre entero en tu navegador, con crypto.subtle y con la implementación de MD5 incluida en esta página. No hay ninguna petición de red al elegir un archivo ni al calcular nada.
- ¿Hay un límite de tamaño para los archivos?
- Sí, 200 MB. No es una limitación del hash en sí, sino de leer el archivo entero en la memoria de la pestaña de golpe; por encima de eso el navegador puede ir mal.
- ¿Qué es el HMAC y en qué se diferencia de un hash normal?
- Un HMAC es un hash que además incorpora un secreto, así que solo quien conoce ese secreto puede reproducirlo. Sirve para comprobar tanto que un mensaje no se ha tocado como que lo generó de verdad quien tiene la clave, que es justo lo que usan los webhooks de servicios como GitHub o Stripe para firmar lo que te envían: calculas el HMAC de la petición con el secreto que te dieron y lo comparas con el que llega en la cabecera.
- ¿Por qué implementáis el HMAC a mano en vez de usar el de crypto.subtle?
- Porque el HMAC nativo del navegador no soporta MD5, y esta herramienta quería tratar los cinco algoritmos igual. La construcción de HMAC (RFC 2104) es pública y no depende de que el navegador la traiga integrada; aquí está hecha con las mismas funciones de hash que ya calcula la página, y su resultado se ha comprobado contra la implementación de Node.js.
Privacidad
Generador de hash funciona íntegramente en tu navegador. No hay servidor detrás: los datos que introduces no se envían a ninguna parte y desaparecen al cerrar la pestaña.