Un generador de hash SHA calcula huellas digitales criptográficas: cadenas de longitud fija que identifican de forma única un conjunto de bytes. Se usan para verificar integridad de archivos, indexar contenido, firmar mensajes y proteger contraseñas (nunca almacenes contraseñas en claro). Esta herramienta calcula SHA-1, SHA-256, SHA-384 y SHA-512 directamente en tu navegador con la Web Crypto API.
Diferencias entre SHA-1, SHA-2 y SHA-3
SHA-1 (160 bits) está roto desde 2017 (colisión SHAttered); úsalo solo para checksums no críticos. SHA-2 (SHA-256, SHA-384, SHA-512) es el estándar actual, seguro y ampliamente soportado. SHA-3 (Keccak) es el nuevo estándar NIST 2015, distinto internamente pero equivalente en fortaleza; adóptalo si necesitas diversidad criptográfica.
Hashing NO es cifrado ni contraseñas
Un hash es unidireccional: dado el hash no puedes recuperar la entrada, pero cualquiera con la misma entrada produce el mismo hash. Por eso NO uses SHA-256 a secas para contraseñas: es rapidísimo y vulnerable a fuerza bruta con GPUs. Para contraseñas usa Argon2id, bcrypt o scrypt: son lentos por diseño y usan sal por usuario.
Casos de uso legítimos de SHA
Integridad de descargas (los .sha256 al lado del ISO), fingerprint de claves SSH, direccionamiento en Git (cada commit es un SHA-1 de su contenido), HMAC para autenticar mensajes, addressing en IPFS y sistemas de contenido inmutable, firma de payloads en webhooks.
Colisiones y ataques prácticos
Una colisión ocurre cuando dos entradas distintas producen el mismo hash. En SHA-256 esto es computacionalmente inviable (2^128 operaciones). En SHA-1 ya se ha logrado con 6500 años-CPU (proyecto SHAttered de Google, 2017). Migra cualquier verificación de integridad crítica a SHA-256 o superior.
Casos de uso comunes
- Verificar que una descarga (ISO, tar.gz) no ha sido alterada.
- Generar el fingerprint de un archivo antes de subirlo a un backup.
- Comparar dos archivos grandes rápidamente sin diff.
- Preparar firmas HMAC para autenticar peticiones a una API.
Buenas prácticas
- Usa SHA-256 o superior para todo lo nuevo; nunca MD5 ni SHA-1.
- Para contraseñas usa Argon2id (o bcrypt con cost 12+), NO SHA a secas.
- Publica hashes de tus releases junto a firma GPG del hash.
- Compara hashes en tiempo constante en el backend para evitar timing attacks.