MiServe DevTools

Tus pegatinas

Fija aquí tus herramientas. Se guardan en este navegador.

Generador de hash

Calcula a la vez los resúmenes MD5, SHA-1, SHA-2, SHA-3, BLAKE2 y CRC-32 de un texto o de un archivo.

Algoritmos

Funciona en tu navegador con WebAssembly. Nada de lo que pegas se sube.

Acerca de esta herramienta

Para qué sirve un hash

Una función hash convierte una entrada de cualquier longitud en un resumen corto de longitud fija. La misma entrada da siempre el mismo resumen, y con las funciones criptográficas de esta página basta con cambiar un solo bit para obtener un resumen que no parece tener relación con el primero. Eso convierte el resumen en una huella: si dos resúmenes difieren, las entradas difieren, y si son iguales, las entradas son casi con total seguridad idénticas, sin necesidad de compararlas byte a byte.

Los usos habituales son verificar una descarga con el checksum que publica su autor, detectar archivos duplicados o modificados y construir claves de caché.

Qué algoritmo elegir

Para todo lo relacionado con la seguridad, usa SHA-256, SHA-512, SHA-3 o BLAKE2. MD5 y SHA-1 están rotos a efectos de seguridad, porque se pueden fabricar a propósito dos entradas distintas con el mismo resumen, pero siguen siendo habituales como simples checksums. CRC-32 no es un hash criptográfico y solo detecta corrupciones accidentales.

Ninguno sirve para guardar contraseñas, porque están diseñados para ser rápidos. Para contraseñas usa una función lenta y con sal, como bcrypt.

Aquí, SHA3-256 es la función estandarizada en FIPS 202. El Keccak-256 que usa Ethereum es anterior a ese estándar y da resúmenes distintos para la misma entrada.

Cómo se calculan y se escriben los resúmenes

Los resúmenes los calculan los paquetes de hash de Go (la biblioteca estándar, y golang.org/x/crypto para BLAKE2) compilados a WebAssembly y ejecutados en un Web Worker, fuera del hilo principal de la página. Los archivos se leen en fragmentos de 8 MB, así que el hash de un archivo grande se calcula sin cargarlo entero en memoria, y el archivo no sale de tu dispositivo.

Un resumen es una secuencia de bytes. hex y HEX escriben cada byte como dos dígitos hexadecimales, y base64 escribe los mismos bytes en Base64, la forma que se usa en los atributos de Subresource Integrity. El campo de comparación acepta cualquiera de las dos notaciones, con o sin el nombre del algoritmo delante, como en sha256-… o sha256:….

Preguntas

¿Se sube mi archivo para calcular el hash?

No. Tu navegador lee el archivo y calcula el hash en tu dispositivo. La herramienta no lo envía a ninguna parte, y la Content-Security-Policy del sitio no permite que la página se conecte a ningún otro host.

¿Por qué mi MD5 no coincide con el que da otra herramienta?

La causa habitual es una entrada que difiere de forma invisible: un salto de línea al final, finales de línea de Windows, una marca de orden de bytes (BOM) o una codificación de texto distinta. Esta herramienta calcula el hash de los caracteres del cuadro codificados en UTF-8 y no añade nada. Un salto de línea en el cuadro es siempre un único avance de línea (LF), así que, para calcular el hash de un texto con finales de línea de Windows, guárdalo en un archivo y calcula el hash del archivo.

¿Se puede revertir un hash para obtener el texto original?

No. Una función hash descarta información, así que no hay nada que descifrar. Aun así, las entradas cortas o comunes se pueden encontrar probando candidatos y comparando, y por eso las contraseñas necesitan una función lenta y con sal.

¿Qué diferencia hay entre SHA-2 y SHA-3?

Son diseños distintos, ambos estandarizados por el NIST. SHA-2, la familia de SHA-256 y SHA-512, es la opción por defecto desde hace años. SHA-3 se basa en la construcción de esponja de Keccak y se estandarizó como alternativa de diseño distinto, por si algún día se encuentra una debilidad en SHA-2. Hoy ambos se consideran seguros.

Más herramientas de Hash