Generador de Hash SHA1

SHA-1 produce un resumen de 160 bits (40 caracteres hexadecimales) y es el hash detrás de los IDs de objetos git, sumas de verificación heredadas de SVN y un montón de sistemas de firma anteriores a 2017. Pega cualquier texto y obtendrás el hash determinista. Una gran advertencia desde el principio: SHA-1 está roto para la resistencia a colisiones (SHAttered, 2017) y no debe usarse para nuevas firmas o almacenamiento de contraseñas; solo es adecuado para verificaciones de integridad no adversariales.

Cómo calcular un hash SHA-1

  1. 1

    Pega tu entrada

    Cualquier texto: una cadena, un archivo completo volcado a texto o una secuencia hexadecimal.

  2. 2

    La codificación es UTF-8

    La entrada se serializa como bytes UTF-8 antes de ser hasheada, coincidiendo con el valor predeterminado en OpenSSL, Python hashlib y Node crypto.

  3. 3

    El bucle Merkle-Damgård se ejecuta

    El mensaje se rellena, se divide en bloques de 512 bits y se alimenta a través de la función de compresión SHA-1 80 rondas por bloque.

  4. 4

    Copia el resumen hexadecimal de 40 caracteres

    La salida siempre son 40 caracteres hexadecimales en minúsculas (160 bits).

SHA-1 de un vistazo

Propiedad Valor
Tamaño de salida 160 bits / 40 caracteres hexadecimales
Tamaño de bloque 512 bits
Rondas 80
Resistencia a colisiones Rota (2^63 prefijo elegido)
Resistencia a preimagen Intacta (hasta la fecha)
Velocidad ~500 MB/s en un solo núcleo moderno

Donde SHA-1 sigue siendo aceptable

  • Git. Los IDs de commit y blob son SHA-1 (con SHA-256 como opción). Las colisiones confundirían la historia, pero no pueden falsificar un commit sin la clave del autor.
  • Deduplicación no relacionada con la seguridad. Direccionamiento de contenido en almacenes de objetos donde el modelo de amenaza no incluye un atacante.
  • APIs compatibles hacia atrás. Webhooks heredados como X-Hub-Signature de GitHub (v1).
  • Identificadores forenses. Huellas digitales de archivos para deduplicación a través de un archivo.

Donde SHA-1 no es aceptable

  • Certificados TLS. Los navegadores desconfían de los certificados SHA-1 desde 2017.
  • Firma de código. Microsoft, Apple y Mozilla rechazaron las firmas SHA-1.
  • Hashing de contraseñas. Usa Argon2id o bcrypt.
  • HMAC en un diseño nuevo. Usa HMAC-SHA-256 como mínimo.

Si quieres verificar la salida

Compara contra echo -n "hello" | sha1sum en cualquier sistema Unix. El hash para la cadena hello es aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d.

Preguntas frecuentes

No matemáticamente. Para entradas cortas comunes, un atacante con un diccionario precomputado puede identificarlas al instante, por eso los hashes por sí solos no protegen las contraseñas. Para una cadena aleatoria de 40 caracteres, no existe una reversa práctica.

No. SHA (Secure Hash Algorithm) es una familia publicada por NIST. SHA-1 es el algoritmo de 160 bits de 1995. SHA-2 es la familia que incluye SHA-224, SHA-256, SHA-384 y SHA-512.

Por compatibilidad con más de una década de historia. Desde 2017, git se protege contra colisiones de prefijo elegido (SHA-1DC) y admite repositorios SHA-256 para nuevos proyectos.

En nuestro servidor. Tu texto se envía por una conexión cifrada, se procesa con la función SHA-1 estándar y se devuelve el resumen de 40 caracteres. No almacenamos el texto que envías. Como SHA-1 es unidireccional, el propio resumen no puede convertirse de nuevo en tu entrada.

Herramientas relacionadas

Herramienta disponible en otros idiomas