Generador de hashes

MD5, SHA-1, SHA-256 y SHA-512 de cualquier texto, calculados en vivo en tu navegador con la API Web Crypto. Nada de lo que escribes se envía a ningún sitio.

¿Cuál debería usar?

Depende de para qué estés calculando el hash.

SHA-256 es la opción segura por defecto para sumas de verificación e integridad. MD5 y SHA-1 están criptográficamente rotos (es posible construir colisiones); sirven para comprobar que un archivo no se corrompió en la transferencia, pero no para nada sensible como el almacenamiento de contraseñas.

No sirve para contraseñas

Ninguno de estos algoritmos debe usarse para almacenar contraseñas: son deliberadamente rápidos, justo lo contrario de lo que hace falta para esa tarea. El almacenamiento de contraseñas necesita un algoritmo lento y diseñado para ello, como bcrypt, scrypt o Argon2.

Cómo funciona

SHA-1, SHA-256 y SHA-512 se calculan con la API nativa crypto.subtle.digest de tu navegador: tu texto se convierte a bytes UTF-8 con TextEncoder, se procesa de forma nativa y el resultado se formatea como hexadecimal en minúsculas. MD5 es la excepción: Web Crypto se niega deliberadamente a implementarlo (está criptográficamente roto), así que esta herramienta incluye una pequeña implementación en JavaScript de RFC 1321 solo para MD5. Los cuatro se recalculan en cada pulsación, con una protección que descarta resultados obsoletos si escribes más rápido de lo que tardan los cálculos.

Un problema práctico al comparar con una terminal: esta herramienta calcula el hash exactamente de los bytes que escribiste, sin salto de línea final. echo "hello" | sha256sum nunca coincidirá, porque echo añade un salto de línea y en realidad estás calculando el hash de "hello\n". Usa printf '%s' "hello" | sha256sum en su lugar y los hashes coincidirán exactamente. Esta misma trampa explica la mayoría de los casos de "por qué mi hash no coincide" entre lenguajes y herramientas.

Como crypto.subtle vive dentro del navegador, no hace falta enviar nada a ningún sitio para calcular un hash. Puedes comprobarlo: abre la pestaña Red de las herramientas de desarrollador y escribe una contraseña o clave de API en el campo. No aparece ninguna petición, tu texto se queda en la pestaña.