SHA-256 y funciones hash: guía práctica para desarrolladores

SHA-256 es un algoritmo de hash criptográfico. Aprende cómo funciona, las diferencias con MD5, sus propiedades fundamentales y los principales casos de uso.

Qué es una función hash criptográfica

Una función hash criptográfica recibe una entrada de tamaño arbitrario y produce una salida de tamaño fijo (el hash). SHA-256 produce un hash de 256 bits (64 caracteres hexadecimales). La función es determinista, unidireccional y sensible al efecto avalancha.

Propiedades fundamentales

  • Determinismo: misma entrada → mismo hash
  • Unidireccionalidad: encontrar la entrada a partir del hash es computacionalmente inviable
  • Efecto avalancha: un cambio de 1 bit en la entrada cambia ~50% de los bits de salida
  • Resistencia a colisiones: extremadamente difícil encontrar dos entradas con el mismo hash

SHA-256 vs MD5

MD5 (128 bits) demostró ser vulnerable a colisiones en 2004. SHA-1 (160 bits) fue comprometido en 2017. SHA-256 sigue siendo considerado seguro y forma parte de la familia SHA-2 estandarizada por el NIST.

Principales casos de uso

  • Integridad de archivos (checksum)
  • Firmas digitales (DSA, RSA, ECDSA)
  • Certificados SSL/TLS
  • Blockchain (Bitcoin usa SHA-256)
  • HMAC para autenticación de peticiones

Hash para contraseñas: no uses SHA-256 directamente

SHA-256 es demasiado rápido para hashear contraseñas. Usa siempre algoritmos lentos con salt: bcrypt (work factor ≥ 12), Argon2id o scrypt. Están diseñados específicamente para hacer el brute force económicamente no viable.