Qué es un hash
Un hash criptográfico convierte cualquier entrada en una huella de tamaño fijo. Cambia un bit de la entrada y toda la salida cambia; desde una salida no hay forma práctica de volver a la entrada; y (en los algoritmos que siguen siendo seguros) es inviable encontrar dos entradas con el mismo hash. Eso hace a los hashes útiles para verificar descargas, detectar cambios, deduplicar datos y, con sal y un algoritmo lento, guardar contraseñas.
| Algoritmo | Salida | Estado | Uso actual |
|---|---|---|---|
| MD5 | 128 bits (32 hex) | Roto: las colisiones son triviales | Sumas de comprobación antiguas, claves de caché. Nunca para seguridad. |
| SHA-1 | 160 bits (40 hex) | Roto: colisiones demostradas (2017) | IDs de objetos de Git (en sustitución). No para firmas. |
| SHA-256 | 256 bits (64 hex) | Seguro | El estándar: TLS, firma de código, sumas de descargas, Bitcoin. |
| SHA-384 | 384 bits (96 hex) | Seguro | Donde se quiere más margen de seguridad; Subresource Integrity. |
| SHA-512 | 512 bits (128 hex) | Seguro | Más rápido que SHA-256 en CPU de 64 bits; hashes de contraseña de Linux (sha512crypt). |
HMAC
Un HMAC mezcla una clave secreta en el hash de una forma concreta (RFC 2104), de modo que solo quien tiene la clave puede producir o verificar el valor. Es el mecanismo detrás de los JWT HS256, las firmas de webhooks (GitHub, Stripe), la firma de peticiones de AWS y los códigos TOTP. Un simple hash(key + message) no es seguro para esto; HMAC existe para corregir la debilidad de extensión de longitud de esa construcción.
Verificar una descarga
- Busca la suma de comprobación publicada en la página de descarga (a menudo un archivo
SHA256SUMS). - Arrastra aquí el archivo descargado o ejecuta
sha256sum archivoen una shell. - Pega el valor publicado en el campo de comparación. Una coincidencia significa que el archivo es byte a byte lo publicado.
Un hash que coincide demuestra integridad, no autenticidad: si un atacante puede cambiar el archivo, también puede cambiar la suma de comprobación de al lado. Para autenticidad necesitas una firma (GPG, Sigstore, minisign).
Contraseñas
No guardes contraseñas como hashes SHA-256. Los hashes rápidos se pueden adivinar miles de millones de veces por segundo en una GPU. Usa una función lenta, con sal y exigente en memoria, hecha para ello: Argon2id, scrypt o bcrypt.
Preguntas
¿Qué hash debo usar?
SHA-256, salvo que haya una razón concreta para otra cosa. Es seguro, está soportado en todas partes y es rápido. SHA-512 es algo más rápido en hardware de 64 bits. MD5 y SHA-1 solo sirven para fines no de seguridad, como claves de caché.
¿Se puede descifrar un hash?
No. Un hash no es cifrado; no hay clave ni inversa. Los atacantes adivinan entradas y comparan hashes, lo que funciona con entradas cortas o comunes (de ahí las tablas arcoíris) y es la razón por la que las contraseñas necesitan sal y hashes lentos.
¿Por qué mi MD5 difiere del de la web?
Casi siempre finales de línea (CRLF frente a LF), un salto de línea al final o una codificación de texto distinta. Hashea los bytes exactos: para un archivo, usa la zona de arrastre en lugar de pegar su contenido.
¿El SHA-256 calculado aquí es el mismo que el de sha256sum?
Sí, byte a byte. La herramienta usa la implementación WebCrypto del navegador para la familia SHA. Para entrada de texto, los bytes son la codificación UTF-8 de lo escrito.
¿Se envía mi archivo o contraseña a algún sitio?
No. El hashing lo hace JavaScript localmente. La página no tiene componente de servidor que pudiera recibirlo.