Cómo se usa
- Introduce un texto, cambia el Formato de entrada a Hexadecimal para introducir bytes o haz clic en Abrir archivo.
- SHA-1 viene preseleccionado; cambia el selector Algoritmo si quieres compararlo con otra función hash.
- En Formato de salida, elige hex (minúsculas), como lo muestran sha1sum y Git, HEX (mayúsculas) o Base64.
- 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.is | 6c667ee2efd2020349eed40efa07c26683f613c8 |
你好 | 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?
=. 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.