Generador de Hash SHA-1

Genera hash SHA-1 de cualquier texto

Texto de entrada

Se ejecuta localmente · Es seguro pegar secretos

Hash SHA-1

El hash SHA-1 aparecerá aquí…

¿Qué es el hashing SHA-1?

SHA-1 (Secure Hash Algorithm 1) es una función hash criptográfica que produce un resumen fijo de 160 bits (20 bytes) a partir de cualquier entrada. Publicada por la NSA y estandarizada por NIST en 1995 como FIPS PUB 180-1 y documentada posteriormente en RFC 3174, SHA-1 fue diseñada como sucesora más robusta de SHA-0 y MD5. El algoritmo procesa la entrada en bloques de 512 bits a través de 80 rondas de operaciones bit a bit, produciendo una huella hexadecimal de 40 caracteres que sirvió de base para SSL/TLS, PGP, SSH e IPsec durante más de una década.

Como todas las funciones hash criptográficas, SHA-1 es una transformación unidireccional: calcular el hash a partir de una entrada es rápido, pero recuperar la entrada solo a partir del hash es computacionalmente inviable. Un cambio de un solo bit en la entrada produce un resumen de 160 bits completamente diferente — una propiedad conocida como efecto avalancha. SHA-1 mapea un espacio de entrada arbitrariamente grande a una salida fija de 160 bits, lo que significa que las colisiones (dos entradas distintas que producen el mismo hash) deben existir matemáticamente. La afirmación de seguridad de una función hash es que encontrar esas colisiones debería requerir aproximadamente 2^80 operaciones — la mitad de la longitud en bits de la salida.

En 2017, Google y CWI Ámsterdam publicaron el ataque SHAttered, demostrando la primera colisión práctica de SHA-1 al producir dos archivos PDF distintos con el mismo resumen. El ataque requirió aproximadamente 2^63.1 cómputos SHA-1 — muy por debajo del límite teórico de 2^80. En 2020, Gaetan Leurent y Thomas Peyrin redujeron aún más el coste con un ataque de colisión de prefijo elegido que requería aproximadamente 2^63.4 operaciones. Como resultado, todos los navegadores principales, autoridades de certificación y organismos de estándares han descontinuado SHA-1 para firmas digitales y certificados TLS. Sin embargo, SHA-1 sigue en uso activo para fines no relacionados con la seguridad: identificadores de objetos de Git (aunque Git está migrando a SHA-256), construcciones HMAC heredadas y sumas de verificación de integridad de archivos donde no se requiere resistencia a colisiones adversariales.

¿Por qué usar este generador SHA-1?

Genera hashes SHA-1 al instante sin instalar nada ni escribir código. Pega tu texto y obtén el resumen hexadecimal de 40 caracteres en tiempo real — útil para verificar sumas de verificación heredadas, depurar las entrañas de Git o probar flujos de trabajo basados en hash.

Hashing instantáneo
La salida se actualiza mientras escribes. Sin clics de botón ni esperas — el resumen SHA-1 aparece carácter a carácter conforme modificas la entrada.
🔒
Procesamiento con privacidad ante todo
Todo el hashing se ejecuta localmente en tu navegador usando la Web Crypto API. Tu texto de entrada nunca abandona tu dispositivo ni se envía a ningún servidor.
📋
Copia con un solo clic
Copia el hash al portapapeles con un solo clic. Alterna entre salida hexadecimal en minúsculas y mayúsculas para adaptarte al formato que espera tu sistema.
🔍
Sin cuenta requerida
Sin registro, sin inicio de sesión, sin límites de uso. Abre la página y empieza a generar hashes de inmediato. Funciona en cualquier dispositivo con un navegador moderno.

Casos de uso de SHA-1

Internos de Git y depuración
Git identifica cada objeto (commit, árbol, blob, etiqueta) por su hash SHA-1. Al depurar comandos de plomería de Git, verificar archivos pack o escribir herramientas personalizadas para Git, un generador SHA-1 rápido te permite cotejar los IDs de objetos con los valores esperados.
Verificación de sistemas heredados
Muchos sistemas antiguos, registros de paquetes y mecanismos de actualización de firmware todavía publican sumas de verificación SHA-1 junto con las descargas. Genera y compara hashes SHA-1 para verificar la integridad de archivos cuando no hay resúmenes SHA-256 disponibles.
Integridad de subrecursos (SRI)
Aunque sha256 y sha384 son los preferidos para los hashes SRI en etiquetas script y link de HTML, algunas configuraciones de CDN heredadas todavía dependen de SHA-1. Genera el resumen esperado para auditar o migrar los atributos SRI existentes.
QA y pruebas de regresión
Compara hashes SHA-1 de respuestas de API, artefactos de compilación o instantáneas de base de datos entre ejecuciones de prueba para detectar cambios inesperados sin realizar una diferencia byte a byte de salidas de gran tamaño.
Deduplicación de datos
Calcula hashes SHA-1 del contenido de archivos o registros de datos en canalizaciones ETL para identificar duplicados. La salida de 160 bits ofrece una garantía de unicidad más robusta que MD5 en escenarios de deduplicación no adversariales.
Aprendizaje y educación
SHA-1 es un algoritmo bien documentado con extensa literatura académica. Experimenta con él para entender la construcción Merkle-Damgard, la programación de mensajes y por qué la resistencia a colisiones se rompe cuando la longitud de salida es demasiado corta en relación con la potencia de cómputo moderna.

SHA-1 frente a otros algoritmos hash

SHA-1 produce un resumen de 160 bits — más largo que MD5 (128 bits) pero significativamente más corto que los algoritmos de la familia SHA-2. La tabla siguiente compara tamaños de resumen, estándares y casos de uso adecuados para cada algoritmo.

AlgoritmoTamaño del resumenLongitud hexEstándarMejor para
SHA-1160 bits40 hex chars1995 / RFC 3174Deprecated — legacy git commits, old TLS
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
MD5128 bits32 hex chars1992 / RFC 1321Checksums only — broken since 2004
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, alternative to SHA-2
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

Cómo funciona SHA-1

SHA-1 sigue la construcción Merkle-Damgard: el mensaje se rellena, se divide en bloques de 512 bits y cada bloque se procesa a través de 80 rondas de operaciones bit a bit que mezclan la entrada con una programación de mensajes derivada del bloque. Cinco palabras de estado de 32 bits (H0 a H4) mantienen el estado hash en ejecución, y la concatenación final de estas palabras produce el resumen de 160 bits.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
PasoDescripción
PaddingAppend a 1-bit, then zeros, until message length is 448 mod 512. Append the original length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
ExpansionExpand each 16-word block into 80 words using a left-rotate-by-1 XOR feedback schedule.
CompressionProcess 80 rounds per block using four nonlinear functions (Ch, Parity, Maj, Parity) across rounds 0-19, 20-39, 40-59, and 60-79.
OutputConcatenate the five 32-bit state words (H0-H4) into a 160-bit (20-byte) digest, rendered as 40 hexadecimal characters.

La diferencia clave entre SHA-1 y MD5 es el número de palabras de estado (5 frente a 4), el número de rondas por bloque (80 frente a 64) y el uso de una programación de mensajes con retroalimentación de rotación a la izquierda. Estas diferencias dan a SHA-1 una salida mayor (160 frente a 128 bits) y originalmente proporcionaban un margen de seguridad más elevado, aunque ambos algoritmos se consideran ahora vulnerables para la resistencia a colisiones.

Ejemplos de código

Cómo generar hashes SHA-1 en lenguajes y entornos populares. A diferencia de MD5, SHA-1 está disponible en la Web Crypto API del navegador, lo que permite usarlo sin librerías externas tanto en el navegador como en entornos Node.js.

JavaScript (Web Crypto API — browser & Node.js)
// SHA-1 is available in the Web Crypto API
async function sha1(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-1', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha1('hello world')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha1').update('hello world').digest('hex')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Python
import hashlib

# Basic SHA-1 hash
result = hashlib.sha1(b'hello world').hexdigest()
print(result)  # → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a string (encode to bytes first)
text = 'hello world'
hashlib.sha1(text.encode('utf-8')).hexdigest()
# → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a file in chunks
with open('file.bin', 'rb') as f:
    sha1 = hashlib.sha1()
    for chunk in iter(lambda: f.read(8192), b''):
        sha1.update(chunk)
    print(sha1.hexdigest())
Go
package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
CLI (Linux / macOS)
# Using sha1sum (Linux) or shasum (macOS)
echo -n "hello world" | sha1sum
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# macOS
echo -n "hello world" | shasum -a 1
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# Hash a file
sha1sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl sha1
# → SHA1(stdin)= 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Preguntas frecuentes

¿Sigue siendo seguro usar SHA-1?
SHA-1 no es seguro para aplicaciones sensibles a la seguridad. El ataque SHAttered de 2017 demostró la generación práctica de colisiones, y el ataque de prefijo elegido de 2020 redujo aún más el coste. Para firmas digitales, certificados TLS o cualquier escenario en el que un adversario pueda construir entradas colisionantes, usa SHA-256 o SHA-3. Para fines no relacionados con seguridad, como sumas de verificación y claves de caché donde ningún adversario controla la entrada, SHA-1 sigue siendo funcional.
¿Cuál es la diferencia entre SHA-1 y SHA-256?
SHA-1 produce un resumen de 160 bits (40 caracteres hexadecimales) y es vulnerable a ataques de colisión. SHA-256 produce un resumen de 256 bits (64 caracteres hexadecimales) y pertenece a la familia SHA-2, que no tiene ataques prácticos conocidos. SHA-256 es aproximadamente un 20-30% más lento que SHA-1 en el mismo hardware, pero los 96 bits adicionales de salida y la ausencia de debilidades estructurales conocidas lo convierten en la recomendación predeterminada para cualquier proyecto nuevo.
¿Por qué Git usa SHA-1?
Cuando Linus Torvalds diseñó Git en 2005, SHA-1 se consideraba seguro y ofrecía un buen equilibrio entre velocidad y resistencia a colisiones para el almacenamiento direccionable por contenido. Git usa SHA-1 como identificador de contenido, no como mecanismo de seguridad — detecta corrupción accidental, no manipulación adversarial. Desde 2021, Git está migrando a SHA-256 mediante el marco de extensión de hash descrito en el plan git-hash-function-transition.
¿Se puede revertir un hash SHA-1 para obtener la entrada original?
No. SHA-1 es una función unidireccional que descarta información durante el hashing. Para entradas cortas o comunes, los atacantes pueden usar tablas arco iris o búsqueda por fuerza bruta para encontrar el texto plano original, pero esto no es una inversión del algoritmo — es una búsqueda exhaustiva del espacio de entrada. Para contraseñas, usa bcrypt, scrypt o Argon2 en lugar de cualquier función hash rápida.
¿Cómo funciona el ataque SHAttered?
El ataque SHAttered explota debilidades estructurales en la función de compresión de SHA-1. Construyendo cuidadosamente dos bloques de mensajes de 512 bits distintos que producen el mismo estado hash intermedio, los investigadores crearon dos archivos PDF con resúmenes SHA-1 idénticos pero contenido visible diferente. El ataque requirió aproximadamente 2^63 cómputos SHA-1 — unos 6.500 años de tiempo de CPU individual, pero viable en un clúster de GPU en cuestión de meses. El coste ha seguido reduciéndose con técnicas mejoradas.
¿Cuál es la diferencia entre SHA-1 y HMAC-SHA1?
SHA-1 es una función hash simple: hash = SHA1(mensaje). HMAC-SHA1 es un código de autenticación de mensajes con clave: mac = HMAC(clave, mensaje). HMAC envuelve la función hash en una construcción que previene ataques de extensión de longitud y requiere una clave secreta. Curiosamente, HMAC-SHA1 sigue considerándose seguro para la autenticación de mensajes aunque SHA-1 en sí sea vulnerable a colisiones, porque la seguridad de HMAC depende de las propiedades de función pseudoaleatoria de la función de compresión, no de la resistencia a colisiones.
¿Debo usar SHA-1 o MD5 para sumas de verificación de archivos?
SHA-1 es mejor opción que MD5 para sumas de verificación de archivos. MD5 produce un resumen de 128 bits y ha sido comprometido desde 2004, con ataques de colisión prácticos que hoy pueden ejecutarse en segundos. SHA-1 produce un resumen de 160 bits y sus ataques de colisión, aunque demostrados, siguen siendo más costosos. Sin embargo, para cualquier sistema nuevo, prefiere SHA-256 — proporciona un resumen de 256 bits sin ataques prácticos conocidos y tiene amplio soporte en todas las plataformas y lenguajes.