Generador de hash SHA-1

Obtén el resumen SHA-1 de 160 bits de un texto, de bytes en hexadecimal o de un archivo mientras escribes. Compáralo con una suma de verificación publicada y consulta de un vistazo el SHA-256, el SHA-512 y el MD5 de la misma entrada.

Todos los algoritmos

Se ejecuta por completo en tu navegador. No se sube nada.

Cómo se usa

  1. Introduce un texto, cambia el Formato de entrada a Hexadecimal para introducir bytes o haz clic en Abrir archivo.
  2. SHA-1 viene preseleccionado; cambia el selector Algoritmo si quieres compararlo con otra función hash.
  3. En Formato de salida, elige hex (minúsculas), como lo muestran sha1sum y Git, HEX (mayúsculas) o Base64.
  4. Pega el SHA-1 esperado en el campo Comparar con; la página mostrará Coincide o No coincide.

¿Qué es SHA-1?

SHA-1 (Secure Hash Algorithm 1) fue diseñado por la NSA y publicado por el NIST en 1995 como FIPS 180-1, en sustitución del efímero SHA-0. Hoy se especifica en FIPS 180-4, y RFC 3174 lo describe con código C de ejemplo. SHA-1 procesa bloques de 512 bits en 80 rondas y genera un resumen de 160 bits: 40 caracteres hexadecimales o 28 caracteres Base64.

Como cualquier hash, SHA-1 es unidireccional. Un resumen no se puede descifrar; solo se puede encontrar una entrada que coincida calculando el hash de posibles candidatos. Así se recuperaron en masa las contraseñas de los hashes SHA-1 sin sal que se filtraron de LinkedIn en 2012; las contraseñas deben guardarse con Argon2, scrypt, bcrypt o PBKDF2.

SHAttered: por qué SHA-1 está obsoleto

En febrero de 2017, investigadores del CWI de Ámsterdam y de Google publicaron SHAttered, la primera colisión real de SHA-1: dos archivos PDF distintos con el mismo hash, encontrados con unos 2^63 cálculos de SHA-1. En 2020, Gaëtan Leurent y Thomas Peyrin ("SHA-1 is a Shambles") usaron una colisión de prefijo elegido para demostrar la falsificación de firmas SHA-1 en claves PGP, con un coste al alcance de un atacante con suficientes recursos.

  • Las CA públicas dejaron de emitir certificados TLS con SHA-1 en 2016, y los navegadores dejaron de confiar en ellos a principios de 2017.
  • El NIST no permite SHA-1 en nuevas firmas digitales desde 2013 y prevé retirarlo por completo a finales de 2030.
  • La mayoría de los repositorios Git siguen identificando los objetos por su SHA-1, calculado con una implementación reforzada que detecta intentos de colisión; Git también puede crear repositorios que usan SHA-256.

Las colisiones no rompen HMAC, así que HMAC-SHA1 sigue presente en los códigos TOTP y en firmas de webhooks antiguas; puedes calcularlo con el Generador HMAC. Para cualquier proyecto nuevo, elige SHA-256.

Identificadores de objetos Git, Base64 y codificación de texto

El identificador de un blob de Git no es el SHA-1 del archivo sin más. Git calcula el hash de un encabezado formado por blob, un espacio, el tamaño en bytes y un byte cero, seguido del contenido. Para reproducirlo aquí, cambia el Formato de entrada a Hexadecimal e incluye esos bytes del encabezado: para hello más un salto de línea, la entrada hexadecimal es 626c6f6220360068656c6c6f0a.

$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f  -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a

SHA-1 se suele mostrar en hexadecimal en minúsculas. Base64 aparece en el handshake de WebSocket, donde Sec-WebSocket-Accept es el SHA-1 en Base64 de la clave del cliente más un GUID fijo, y en los valores de contraseña {SHA} de LDAP. Recuerda que el hash se calcula sobre bytes: un texto con letras acentuadas tiene un SHA-1 en UTF-8 y otro distinto en Windows-1252.

SHA-1 en la línea de comandos y en código

sha1sum file.zip                          # Linux
shasum file.zip                           # macOS (SHA-1 es el predeterminado)
certutil -hashfile file.zip SHA1          # Windows
Get-FileHash file.zip -Algorithm SHA1     # PowerShell

# Python
hashlib.sha1(data).hexdigest()

// Node.js
crypto.createHash('sha1').update(data).digest('hex')

Esta página calcula SHA-1 con la Web Crypto API integrada en tu navegador, así que la entrada nunca sale de tu dispositivo. La tabla Todos los algoritmos muestra los valores MD5, SHA-256, SHA-384, SHA-512 y CRC de la misma entrada.

Ejemplos

Entrada (UTF-8)SHA-1
Hello, World!0a0a9f2a6772942557ab5355d76af442f8f65e01
Base64.is6c667ee2efd2020349eed40efa07c26683f613c8
你好440ee0853ad1e99f962b63e459ef992d7c211722

Preguntas frecuentes

¿Sigue siendo seguro usar SHA-1?

No cuando un atacante puede elegir la entrada o influir en ella, como en firmas y certificados, porque es posible generar colisiones de SHA-1. Sigue detectando daños accidentales, y las colisiones no afectan a HMAC-SHA1. Para proyectos nuevos, usa SHA-256 o SHA-512.

¿Se puede revertir un hash SHA-1?

No. No hay clave ni descifrado posible. Los sitios de búsqueda de hashes solo encuentran entradas que ya están en sus tablas de palabras comunes y contraseñas filtradas; por eso una entrada larga y aleatoria está a salvo de ellos y una contraseña corta no.

¿Qué longitud tiene un hash SHA-1?
160 bits, o 20 bytes: 40 caracteres hexadecimales o 28 caracteres Base64 terminados en un =. RIPEMD-160 tiene la misma longitud, y los hashes de contraseña de MySQL 4.1+ son un asterisco seguido de 40 caracteres hexadecimales. El Identificador de hash muestra los posibles algoritmos para una cadena concreta.
¿Cómo compruebo un archivo con un SHA-1 publicado?

Haz clic en Abrir archivo y pega el valor publicado en el campo Comparar con. Se acepta hexadecimal en mayúsculas o minúsculas y también Base64, y la página muestra Coincide o No coincide.

¿Qué diferencia hay entre SHA-1 y SHA-256?

Ambos los publicó el NIST, pero SHA-256 pertenece a la familia SHA-2, más reciente, tiene una salida de 256 bits y no se le conocen ataques prácticos. SHA-1 tiene una salida más corta y su resistencia a colisiones está rota.