Guía

SHA-256, hash y cifrado: diferencias importantes

Aprende para qué sirve una huella SHA-256, por qué no se descifra y cuándo no basta para guardar contraseñas o autenticar datos.

por Tools in a Tab · Publicado el · Revisado el

Respuesta breve

SHA-256 es una función hash: transforma una secuencia de bytes en una huella de 256 bits. No cifra el texto y no existe una clave para «descifrar» el hash.

entrada UTF-8: abc
SHA-256:
ba7816bf8f01cfea414140de5dae2223
b00361a396177a9cb410ff61f20015ad

El resultado hexadecimal tiene 64 caracteres. Puedes comprobar el vector con el generador SHA-256.

Propiedades útiles

  • La misma secuencia de bytes produce la misma huella.
  • Un cambio pequeño en la entrada altera ampliamente el resultado.
  • La salida tiene longitud fija.
  • No se espera poder reconstruir la entrada a partir de la huella.

El estándar FIPS 180-4 especifica SHA-256 dentro de la familia Secure Hash Standard.

Lo que una coincidencia demuestra

Si calculas SHA-256 sobre bytes descargados y coincide con una huella obtenida por un canal confiable, tienes evidencia de que esos bytes no cambiaron. Si la huella y el archivo proceden del mismo lugar comprometido, la comparación no aporta autenticidad independiente.

Para autenticar un mensaje hacen falta construcciones como un MAC o una firma, con claves y verificación adecuadas. Concatenar manualmente un secreto con el texto y aplicar SHA-256 no sustituye un diseño criptográfico revisado.

Contraseñas

SHA-256 solo es rápido, lo que facilita probar muchas contraseñas candidatas. El almacenamiento de contraseñas necesita una función específica, lenta y con salt, junto con parámetros mantenidos por el sistema. Base64 tampoco sirve: es reversible sin clave.

Compara exactamente los bytes

texto, texto\n y una versión con otra normalización Unicode producen hashes distintos. Documenta codificación, saltos de línea y si la herramienta procesa texto o archivos. La herramienta publicada calcula SHA-256 de texto UTF-8; no afirma calcular directamente el contenido binario de un archivo.