¿Qué es el hash? Una explicación completa de funciones hash
Respuesta rápida
Hashing convierte cualquier entrada en una salida de tamaño fijo (hash) mediante una función unidireccional. La misma entrada siempre produce el mismo hash; diferentes entradas producen diferentes hashes (resistencia a la colisión). El hashing se utiliza para la integridad de los datos, el almacenamiento de contraseñas y las firmas digitales. Utilice nuestro generador de hash gratuito para calcular hashes SHA-256, SHA-1 y MD5 en su navegador.
Introducción
Hashing es el proceso de convertir datos de entrada de cualquier tamaño en una salida de tamaño fijo llamada hash o resumen. Una función hash es el algoritmo que realiza esta conversión. Las funciones hash criptográficas tienen propiedades especiales que las hacen útiles para la integridad de datos, el almacenamiento de contraseñas, las firmas digitales y el direccionamiento de contenidos. A diferencia del cifrado, el hash es unidireccional: no se puede recuperar la entrada del hash. Las funciones hash comunes incluyen SHA-256 (usada en Bitcoin y TLS), SHA-3 y las antiguas MD5 y SHA-1 (ahora rotas por motivos de seguridad).
Paso a paso
-
Comprender las propiedades de la función hash
Las funciones hash criptográficas tienen cuatro propiedades clave: (1) Determinista: la misma entrada siempre da el mismo resultado. (2) Rápido de calcular. (3) Unidireccional: no es factible recuperar la entrada del hash. (4) Resistente a colisiones: no es posible encontrar dos entradas diferentes con el mismo hash. (5) Efecto avalancha: un pequeño cambio en la entrada cambia drásticamente la salida.
-
Aprenda algoritmos comunes
SHA-256 (salida de 256 bits, 64 caracteres hexadecimales) es el estándar moderno, utilizado en Bitcoin, TLS y firmas digitales. SHA-512 es más seguro pero más lento. SHA-3 es la familia más nueva. MD5 (128 bits) y SHA-1 (160 bits) están rotos por resistencia a colisiones y no deben usarse por motivos de seguridad.
-
Distinguir el hash del cifrado
El hashing es unidireccional: no se puede revertir. El cifrado es bidireccional: puedes descifrarlo con una clave. El hash sirve para integridad y verificación; el cifrado es para la confidencialidad. Nunca utilices un hash para almacenar datos que necesites recuperar.
-
Utilice el hash correctamente
Para la integridad de los datos, haga un hash de los datos y compárelos con un hash conocido. Para las contraseñas, utilice un hash de extensión de claves lento (bcrypt, scrypt, Argon2) con una sal única, no SHA-256 sin formato, que es demasiado rápido y vulnerable a la fuerza bruta.
Ejemplos
Hash SHA-256
Aporte: Hello, World!
Producción: dffd6021bb2bd5b0af676290809ec008dfca50a8d29e6ac0a52c2d7e9f0a3b0c
efecto avalancha
Aporte: Hello, World! (vs Hello, World?)
Producción: Hash completamente diferente a pesar del cambio de un carácter
MD5 hash (roto, solo heredado)
Aporte: Hello, World!
Producción: ed0760733d7505e9ceacf8af225020ac
Problemas comunes
- Usar MD5 o SHA-1 por seguridad; ambos están rotos para resistir colisiones. Utilice SHA-256 o más fuerte para cualquier propósito de seguridad.
- Hashing de contraseñas sin sal: las contraseñas idénticas producen hashes idénticos, lo que permite ataques de tabla arcoíris. Utilice bcrypt, scrypt o Argon2 con una sal única.
- Confundir hash con cifrado: el hash es unidireccional (no se puede revertir); El cifrado es bidireccional (se puede descifrar con una clave).
- Esperar que los hashes sean únicos: las colisiones son teóricamente posibles pero prácticamente inviables para algoritmos seguros (SHA-256 tiene 2^256 salidas posibles).
Consejos
- Utilice SHA-256 para verificación de integridad de datos, direccionamiento de contenido y firmas digitales.
- Para almacenar contraseñas, utilice bcrypt, scrypt o Argon2, no SHA-256 sin formato. Estos algoritmos tienen una clave de estiramiento para resistir la fuerza bruta.
- El hashing es unidireccional: nunca lo utilice para almacenar datos que necesita recuperar. Utilice cifrado para datos confidenciales.
- Utilice nuestro generador de hash para calcular SHA-256 y otros hashes instantáneamente en su navegador.