Saltar al contenido

Generar un hash

MD5, SHA-1, SHA-256, SHA-384 y SHA-512, para texto o para un archivo de cualquier tamaño. Útil para verificar que una descarga coincide con su checksum publicado. No se guarda nada.

  • Nunca se guarda
  • Sin filas ni esperas
  • Sin registro, sin marca de agua

El texto se procesa como UTF-8. Suelta un archivo para verificar una descarga.

Cómo funciona

1

Pega texto o suelta un archivo

El texto se procesa como UTF-8. El archivo se lee y se calcula su hash aquí; nunca se guarda.

2

Lee todos los hashes a la vez

Los cinco algoritmos se calculan juntos, así que no necesitas saber de antemano cuál te hace falta.

3

Compara con un valor esperado

Pega el checksum que te dieron y se compara por ti: comparar carácter por carácter a simple vista es donde se cometen los errores.

Qué demuestra un hash y qué no

Un hash es una huella de longitud fija de cualquier cantidad de datos, y tiene dos propiedades que conviene enunciar con precisión. Es unidireccional: no hay ninguna operación que convierta un hash de nuevo en los datos, porque casi toda la información se pierde. Y es sensible: si cambias un solo bit de la entrada, cambia aproximadamente la mitad de los bits de la salida. Eso es lo que lo hace útil para confirmar que un archivo se descargó intacto, o que dos archivos son iguales sin compararlos byte a byte.

MD5 y SHA-1 están rotos y aun así están aquí, por una razón. Ambos tienen ataques de colisión prácticos (MD5 desde 2004; SHA-1, demostrado con un par real de PDF en 2017), lo que significa que alguien puede construir dos archivos distintos con el mismo hash. Así que ninguno demuestra nada frente a un adversario. Los dos siguen siendo perfectamente válidos para detectar corrupción accidental, y muchísimo software real todavía publica checksums MD5, así que comprobar uno contra una descarga es una necesidad legítima. Usa SHA-256 para todo aquello en que alguien pueda estar intentando engañarte.

Nunca calcules el hash de una contraseña con ninguno de estos. Es lo más importante de esta página. Los hashes están diseñados para ser rápidos, y la rapidez es exactamente lo contrario de lo que necesita una contraseña: una tarjeta gráfica moderna calcula miles de millones de hashes SHA-256 por segundo, así que una base de datos robada de contraseñas con hash se descifra en horas. Para guardar contraseñas hace falta una función lenta a propósito con una sal por usuario (argon2, bcrypt o scrypt), creadas para costar tiempo y memoria de forma deliberada. Un SHA-256 simple de una contraseña es una vulnerabilidad, no una protección, por mucho que lo parezca en una columna de la base de datos.

Comparar un hash que calculaste con uno publicado en la misma página de donde descargaste el archivo demuestra menos de lo que parece: quien pudiera reemplazar el archivo podría reemplazar también el número que lo acompaña. Un checksum vale más cuando viene de otro lugar: una versión firmada, un canal separado, un valor que tú mismo anotaste antes.

Si buscas otra cosa

En la línea de comandos esto es una sola palabra: shasum -a 256 file en macOS y Linux, certutil -hashfile file SHA256 en Windows, y md5sum o sha1sum cuando lo que se publica es un checksum más antiguo. Procesan el archivo por flujo en lugar de cargarlo entero, así que no hay límite de tamaño, y esa es la verdadera diferencia con cualquier cosa de más de unos cientos de megabytes, donde una página que mantiene el archivo completo en memoria simplemente fallará.

Para verificar que una versión publicada es auténtica y no solo que está intacta, un hash por sí solo es la herramienta equivocada. Las firmas GPG (gpg --verify file.sig file) demuestran quién produjo el archivo, que es la pregunta que un checksum no puede responder. La mayoría de los proyectos serios publican ambas cosas, y la que importa es la firma.

Preguntas frecuentes

¿Se guarda mi archivo en algún lugar?

No. El hash del archivo se calcula con la misma criptografía integrada que se encarga de HTTPS. No se guarda nada, así que no hay tope de tamaño ni esperas por la conexión.

¿Hay un límite de tamaño?

La memoria disponible, no un tope de tamaño fijo. La criptografía del navegador no tiene forma de calcular el hash de un archivo por partes (necesita el archivo completo en memoria a la vez), así que un archivo muy grande (una imagen de DVD, por ejemplo) puede fallar en un equipo que no pueda contenerlo. Los archivos de hasta unos cientos de megabytes van bien en una computadora normal. Si uno grande falla, ese es el límite que alcanzaste, y la página lo dice en lugar de quedarse colgada.

¿Qué hash debería usar?

SHA-256 para todo lo nuevo. Es el estándar moderno, es el que usan los checksums de software, los digests de contenedores y los sistemas blockchain, y no tiene debilidades conocidas. Usa MD5 o SHA-1 solo cuando otra cosa lo exija: coincidir con un checksum antiguo publicado, un sistema heredado o Git, que identifica los objetos por SHA-1. Usa SHA-512 cuando quieras específicamente un resumen más largo; en máquinas de 64 bits suele ser más rápido que SHA-256, no más lento.

¿Puedo usar esto para calcular el hash de una contraseña?

Puedes, pero no deberías guardar el resultado. Es el error más común en este terreno, así que vale la pena ser directos: MD5, SHA-1 y SHA-256 son todos incorrectos para contraseñas, y que SHA-256 sea criptográficamente fuerte no ayuda. El problema es que estas funciones son RÁPIDAS por diseño: una tarjeta gráfica moderna calcula miles de millones de hashes SHA-256 por segundo, así que una base de datos robada de contraseñas con hash SHA-256 se descifra a una velocidad enorme. Las contraseñas necesitan una función lenta a propósito, con sal y hecha para eso: bcrypt, scrypt o Argon2. Todo framework serio trae una integrada.

¿Por qué MD5 aparece como inseguro?

Porque hoy cualquiera puede construir dos archivos distintos con el mismo hash MD5, en hardware común, en segundos. Es así desde 2004 y se ha demostrado con consecuencias reales y concretas: dos PDF que muestran contratos distintos, dos ejecutables de los que uno es malware. Así que MD5 no puede demostrar que un archivo es el que esperabas; una falsificación deliberada puede coincidir. Sigue siendo perfectamente razonable para detectar corrupción accidental, como una descarga defectuosa o una copia truncada, que es para lo que sirven en realidad la mayoría de los checksums MD5 publicados. Nunca debe usarse para seguridad.

¿Por qué SHA-1 aparece como inseguro?

Por la misma razón, más recientemente. En 2017, Google y el CWI produjeron dos PDF distintos con el mismo hash SHA-1, y para 2020 el ataque era lo bastante barato como para falsificar firmas. Los navegadores dejaron de aceptar certificados SHA-1 hace años, y Git está migrando a otro algoritmo. Si hoy estás eligiendo un algoritmo, elige SHA-256.

¿Cómo verifico una descarga?

Suelta el archivo descargado y luego pega en la casilla de comparación el checksum del sitio de donde lo obtuviste. Si coinciden, el archivo llegó intacto y es el que se publicó. Si no, bórralo y vuelve a descargarlo. Dos advertencias: obtén el checksum de la fuente oficial y no del mismo lugar de donde sacaste el archivo, y recuerda que un checksum solo demuestra que el archivo coincide con lo que publicó esa página; si la propia página estaba comprometida, los dos van a coincidir.

¿Los hashes se calculan correctamente?

SHA-1, SHA-256, SHA-384 y SHA-512 vienen de la implementación Web Crypto del propio navegador, el mismo código que se encarga de HTTPS. MD5 no está en Web Crypto (a propósito, porque está roto), así que aquí se implementa directamente a partir de la RFC 1321 y se comprueba con los vectores de prueba publicados en ese mismo documento.

Conviene saber: MD5 y SHA-1 están aquí porque archivos reales y sistemas antiguos todavía los usan, no porque sean seguros: ambos están rotos para cualquier uso de seguridad y solo sirven como checksums. Web Crypto no tiene resumen incremental, así que el archivo completo se mantiene en memoria: los archivos muy grandes fallarán en lugar de procesarse por flujo.

Agrega esta herramienta a tu sitio web

Gratis para cualquier blog, página de clase o artículo de ayuda. Pega un fragmento de código y tus visitantes podrán usarla directamente en tu página.