Hash y checksum

Generar hash MD5, SHA-256 y verificar el checksum de un archivo

Pega un texto y salen sus cinco hashes a la vez, mientras escribes. O suelta un archivo —del tamaño que sea— y calcula su checksum leyéndolo por trozos desde tu disco, para comparar con el que publicó quien te lo dio.

Cero subidas · todo en tu navegador

Verificar una descarga subiéndola a otro sitio sería absurdo. Aquí el archivo no se mueve.

Aquí «no se sube nada» no es un eslogan: es el motivo

En las demás herramientas del sitio, que el archivo no salga de tu equipo es una cuestión de privacidad. En esta, además, es lo único que hace que la herramienta tenga sentido. Piensa en el caso real: acabas de descargar una ISO de 4 GB o el instalador de un programa, y quieres comprobar que llegó entero y sin manipular. Una web que te pidiera subir ese archivo para calcularle el checksum tardaría más que la descarga original, se comería tu conexión entera y no habría resuelto nada.

Aquí el archivo se lee por trozos de dos megas desde tu propio disco, cada trozo se suma al cálculo y se descarta. No hay ninguna petición que lleve nada a ninguna parte: carga la página, desconecta internet y compruébalo.

Cómo funciona, en 3 pasos

  1. Texto o archivo

    Pega el texto y los cinco hashes aparecen solos. O ve a la pestaña de archivo, marca los algoritmos que necesites y suelta el archivo encima.

  2. Espera la barra

    Con archivos grandes verás el progreso, la velocidad real y el tiempo que falta. Si marcas varios algoritmos, el archivo se lee una sola vez para todos.

  3. Compara

    Pega debajo el checksum que publicó el proveedor. Se reconoce solo de qué algoritmo es y te dice en verde o en rojo si coincide.

Para qué la usa la gente

Un hash no es cifrado, y no se puede revertir

Esta es la confusión con la que llega más gente, así que conviene despejarla antes de nada. Cifrar es reversible por diseño: con la clave correcta se recupera el original, porque el original está ahí dentro. Un hash no lo es en absoluto, y no porque nadie haya dado todavía con el truco, sino porque la información no está.

La forma más rápida de verlo: un archivo de 4 GB y la palabra «hola» producen exactamente los mismos 64 caracteres de SHA-256. Es imposible que esos 64 caracteres contengan los 4 GB. Un hash es una huella dactilar del contenido, no un envoltorio: identifica sin guardar.

¿Y las webs que prometen «descifrar MD5»? No descifran nada. Tienen una tabla enorme de textos corrientes con su hash ya calculado y buscan el tuyo dentro. Con 123456 aciertan al instante, porque está en la tabla. Con una contraseña larga y única, no aciertan nunca, porque no puede estar.

MD5 y SHA-1 están rotos, y aun así siguen aquí

«Roto» significa algo concreto: se pueden fabricar a propósito dos archivos distintos con el mismo hash. Eso hunde por completo cualquier uso donde el hash deba probar autoría o autenticidad —firmas digitales, certificados, contraseñas— y en esos casos MD5 y SHA-1 no se deben usar bajo ningún concepto. Para MD5 esto se demostró en 2004 y hoy una colisión se calcula en segundos; para SHA-1, en 2017 con dos PDF distintos y el mismo hash.

Lo que no hunde es el uso de detectar corrupción accidental. Si tu descarga se cortó a medias o un byte cambió por el camino, el MD5 cambia igual: para que dos archivos compartan hash hay que construirlos a propósito, y el ruido de una conexión no construye nada. Por eso siguen aquí, y por un motivo aún más terrenal: media internet sigue publicando el MD5 de sus descargas, y si tu proveedor te da un MD5, necesitas calcular un MD5 para compararlo.

La herramienta los marca con una etiqueta para que sepas dónde estás. Si eliges tú el algoritmo y no te lo impone nadie, usa SHA-256.

Por qué esta herramienta puede con un archivo de 4 GB

El navegador trae sus propias funciones de hash, pero tienen dos límites que las dejan fuera aquí: no incluyen MD5, y solo saben calcular de una vez, sobre un archivo entero cargado en memoria. Con 4 GB eso no cabe.

Así que los cinco algoritmos están implementados aquí de forma que aceptan el archivo a trozos: se lee un fragmento del disco, se suma al cálculo, se descarta y se pasa al siguiente. La memoria que hace falta es la de un trozo, da igual que el archivo pese cuatro gigas o cuarenta.

Hay un detalle de esas implementaciones que casi nadie prueba y que rompe justo con archivos grandes: el contador interno de longitud. Muchas versiones caseras lo guardan en un número de 32 bits, que se desborda exactamente a los 512 MiB y devuelve un checksum incorrecto sin avisar de nada. Es decir: fallan a partir del tamaño en el que esta herramienta empieza a ser útil. Aquí ese contador se lleva de otra forma, y está comprobado procesando 513 MiB de datos y contrastando el resultado con una implementación de referencia. Todos los algoritmos están además contrastados contra los vectores publicados en sus normas y contra una implementación independiente en todas las longitudes de 0 a 300 bytes, que es donde se esconden los fallos de relleno.

Cuando el checksum no coincide

Antes de asustarse conviene descartar lo aburrido, que es lo que ocurre nueve de cada diez veces: haber pegado el checksum de otra versión, de otra arquitectura o de otro formato del mismo programa. En una tabla de descargas con ocho filas es facilísimo copiar la de al lado.

Lo segundo más común es una descarga interrumpida. Compara primero el tamaño del archivo con el que anuncia la página: si no cuadra, ahí está el problema y basta con volver a descargarlo.

Si el tamaño es exacto y el checksum sigue sin coincidir, entonces sí: no ejecutes ese archivo. Y ten presente el límite de todo esto: el checksum solo vale si viene de una fuente de confianza. Si te lo dieron en la misma página desde la que descargaste y esa página estuviera comprometida, el atacante habría cambiado los dos. Por eso los proyectos serios firman el archivo de checksums aparte.

El HMAC, para quien firma peticiones

Un hash normal lo puede calcular cualquiera, así que no prueba nada sobre quién lo hizo. El HMAC añade una clave compartida: solo quien la tenga puede generar la firma, y quien la tenga puede comprobarla. Es lo que piden muchas APIs para autenticar peticiones —firmas la cadena de la petición con tu clave secreta y el servidor repite el cálculo— y lo que usan las pasarelas de pago en sus avisos, para que puedas verificar que el mensaje viene de ellas.

La pestaña de HMAC acepta la clave como texto o en hexadecimal, porque bastantes proveedores la entregan así. Si lo que buscas es generar una clave o una contraseña en vez de firmarla, eso lo hace el generador de contraseñas. Y si el resultado lo necesitas en Base64 para meterlo en una cabecera, la herramienta de Base64 explica ese formato con detalle.

Los límites, dichos antes de que fallen

No hay tope de tamaño: como se lee por trozos, el tamaño solo afecta al tiempo. En un equipo normal, SHA-256 ronda los 200-300 MB por segundo, así que una ISO de 4 GB son unos veinte segundos. SHA-512 va unas seis veces más lento —trabaja con números de 64 bits que JavaScript no tiene y hay que emular—, así que si lo marcas sobre un archivo grande, cuenta con eso. Marcar varios algoritmos a la vez sale a cuenta: el archivo se lee una sola vez y se alimentan todos en la misma pasada.

Y una advertencia que no es de tamaño sino de uso: esto no sirve para guardar contraseñas. Estos algoritmos están diseñados para ser rápidos, que es justo lo que no quieres ahí: una tarjeta gráfica calcula miles de millones de SHA-256 por segundo. Para contraseñas hacen falta algoritmos deliberadamente lentos y con sal, como bcrypt, scrypt o Argon2.

Preguntas frecuentes

¿Un hash es lo mismo que cifrar? ¿Se puede revertir?

No y no. Cifrar es reversible por diseño: con la clave se recupera el original. Un hash no lo es en absoluto, y no porque falte encontrar el truco, sino porque la información no está ahí.

Un archivo de 4 GB y la palabra «hola» producen los mismos 64 caracteres de SHA-256: es imposible que esos 64 caracteres contengan los 4 GB. Es una huella, no un envoltorio.

Las webs que dicen «descifrar MD5» no descifran nada: tienen una tabla enorme de textos comunes con su hash ya calculado. Con 123456 aciertan al instante; con una contraseña larga y única, nunca.

Si MD5 y SHA-1 están rotos, ¿por qué siguen aquí?

Porque «roto» significa que se pueden fabricar a propósito dos archivos distintos con el mismo hash. Eso hunde firmas, certificados y contraseñas, y ahí no se deben usar bajo ningún concepto.

Pero no hunde el uso de detectar corrupción: si la descarga se cortó, el MD5 cambia igual. Y siguen aquí por algo muy terrenal: media internet publica todavía el MD5 de sus descargas, y para comparar un MD5 hace falta calcular un MD5. La herramienta los marca para que sepas dónde estás.

¿De verdad no se sube el archivo?

De verdad. Se lee por trozos de dos megas desde tu disco, cada trozo se suma al cálculo y se descarta. No hay ninguna petición que lleve nada a ninguna parte: carga la página, desconecta internet y compruébalo.

Piénsalo al revés: una web que subiera tu ISO de 4 GB para calcular su checksum tardaría más que la descarga original. Verificar una descarga subiéndola a otro sitio es absurdo por definición.

¿Qué tamaño de archivo aguanta?

No hay tope: el tamaño afecta al tiempo, no a la memoria. SHA-256 ronda los 300 MB por segundo en un equipo normal, así que 4 GB son unos quince o veinte segundos. SHA-512 va unas seis veces más lento.

Si marcas varios algoritmos, el archivo se lee una sola vez y se alimentan todos a la vez. Hay barra de progreso con velocidad y tiempo restante, y botón para cancelar.

El checksum no coincide. ¿Me han colado algo?

Primero lo aburrido, que es lo que pasa nueve de cada diez veces: haber pegado el checksum de otra versión o de otra arquitectura. En una tabla de descargas es facilísimo copiar la línea de al lado.

Lo segundo, una descarga interrumpida: compara el tamaño con el que anuncia la página. Si cuadra y el checksum sigue sin coincidir, no ejecutes ese archivo.

Y ojo al límite: el checksum solo vale si viene de una fuente de confianza. Si te lo dieron en la misma página comprometida desde la que descargaste, serían falsos los dos.

¿Para qué sirve el HMAC?

Para firmar un mensaje con una clave compartida. Un hash normal lo calcula cualquiera; un HMAC solo lo puede generar quien tenga la clave.

Es lo que piden muchas APIs para autenticar peticiones y lo que usan las pasarelas de pago en sus avisos, para que compruebes que el mensaje viene de ellas. Aquí la clave se puede meter como texto o en hexadecimal.

¿Puedo usar esto para guardar contraseñas?

No. Estos algoritmos están diseñados para ser rápidos, y esa es justo la propiedad que no quieres ahí: una tarjeta gráfica calcula miles de millones de SHA-256 por segundo, así que recorrer un diccionario entero es cuestión de minutos.

Para contraseñas hacen falta algoritmos deliberadamente lentos y con sal, como bcrypt, scrypt o Argon2. Un SHA-256 a secas no es almacenamiento seguro por mucho que lo parezca.

¿Hexadecimal o Base64?

Son el mismo resultado escrito de dos maneras. El hexadecimal es lo que publica casi todo el mundo como checksum y lo que devuelven sha256sum, certutil o Get-FileHash.

El Base64 ocupa menos y es el formato de las cabeceras de integridad de la web, las que llevan sha384-…. El comparador reconoce los dos.

Herramientas relacionadas