Generador de Hash
Generá digests MD5, SHA-1, SHA-224, SHA-256, SHA-384 y SHA-512 de cualquier texto a la vez. Funciona enteramente en tu navegador: no se envía nada a ningún servidor.
Los seis digests aparecen acá mientras escribís
¿Qué es una función de hash?
Una función de hash convierte una entrada de cualquier tamaño en una huella de largo fijo. La misma entrada siempre produce el mismo digest, cambiar un solo caracter produce uno completamente distinto, y no hay forma de correr la función al revés para recuperar el texto original. Esta herramienta calcula los seis digests a la vez a partir de los bytes UTF-8 de lo que escribís, así podés comparar formatos uno al lado del otro. SHA-1, SHA-256, SHA-384 y SHA-512 los calcula la API de criptografía nativa de tu navegador; MD5 y SHA-224 se calculan en JavaScript acá, porque el estándar Web Crypto no los incluye. En cualquiera de los dos casos, nada sale de tu dispositivo.
Cómo elegir un algoritmo
MD5 (128 bits)
Roto para seguridad desde 2004: se pueden producir colisiones en una notebook en segundos. Sigue estando en todos lados como checksum sin fines de seguridad, como ETag o como clave de caché, y sigue siendo lo que publican muchos sistemas heredados y sitios con listados de archivos. Nunca lo uses para contraseñas, firmas, ni para probar que un archivo no fue alterado.
SHA-1 (160 bits)
También está roto: en 2017 se demostró una colisión práctica y los navegadores dejaron de confiar en los certificados SHA-1. Git todavía lo usa para los ids de sus objetos, y muchas APIs todavía firman con él, así que lo vas a seguir encontrando. Tratalo como a MD5: sirve como identificador, no como garantía de seguridad.
SHA-224 y SHA-256
Los miembros de 32 bits de la familia SHA-2, y el default sensato hoy. SHA-256 es lo que usan los certificados TLS, los protocolos de blockchain, los checksums de paquetes y los tokens firmados. SHA-224 es SHA-256 truncado a 224 bits, útil cuando un protocolo especifica ese largo exacto.
SHA-384 y SHA-512
Los miembros de 64 bits de SHA-2. No son solo más largos: usan un tamaño de palabra interno distinto, lo que los hace más rápidos que SHA-256 en hardware de 64 bits. SHA-384 es SHA-512 truncado, y es lo que especifican varias suites de cifrado TLS y algoritmos de JWT.
Ejemplos
El mismo digest calculado en los lenguajes que probablemente uses:
const buf = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(str));
const hex = [...new Uint8Array(buf)].map((b) => b.toString(16).padStart(2, "0")).join("");import hashlib
hashlib.sha256(text.encode("utf-8")).hexdigest()MessageDigest.getInstance("SHA-256")
.digest(text.getBytes(StandardCharsets.UTF_8));import "crypto/sha256"
fmt.Printf("%x", sha256.Sum256([]byte(text)))hash("sha256", $text);printf "%s" "$text" | sha256sum
printf "%s" "$text" | md5sumCasos de uso
Verificar una descarga
Pegá el checksum publicado al lado de un archivo y comparalo contra el que calculás localmente. Si difiere un solo caracter, el archivo que tenés no es el que se publicó.
Reproducir una firma o una clave de caché
Cuando una API rechaza tu request o una caché no encuentra la entrada, hashear el string exacto que creés haber mandado es la forma más rápida de descubrir si tu entrada difiere de la que esperaba el otro lado.
Deduplicar registros
Hashear una versión normalizada de un registro te da una clave corta y de largo fijo para detectar duplicados sin comparar campo por campo.
Chequear fixtures y migraciones
Muchas herramientas de migración y sistemas de configuración guardan un checksum de cada archivo para detectar ediciones posteriores. Calcular ese digest a mano te dice por qué una herramienta reporta un archivo como cambiado.