🌐 ES

🔐 Generador de Hash

Convierte texto en diversos algoritmos hash. Se utiliza para la verificación de integridad de archivos, el hash de contraseñas y la validación de datos.

Selecciona un archivo para generar el hash de su contenido
GUÍA

Más información

01

1. Qué es una función hash

Una función hash es una función unidireccional que convierte datos de tamaño arbitrario en un valor de tamaño fijo. Presenta el efecto avalancha: incluso un cambio mínimo en la entrada produce un hash completamente diferente, y la misma entrada siempre genera la misma salida. MD5 genera un hash de 128 bits, SHA-1 de 160 bits y SHA-256 de 256 bits. Dado que los hashes son funciones unidireccionales que no se pueden descifrar, son ideales para verificar la integridad mientras se oculta el dato original. Se usan ampliamente en la verificación de descargas de archivos, el almacenamiento de contraseñas, la blockchain, las firmas digitales y más.

02

2. Comparación de algoritmos MD5 y SHA

MD5 es un hash de 128 bits desarrollado en 1991, muy rápido pero vulnerable a ataques de colisión. Las graves vulnerabilidades de seguridad descubiertas en 2004 lo hacen inadecuado para fines criptográficos, usándose solo para sumas de comprobación de archivos. SHA-1 es un hash de 160 bits más seguro que MD5, pero el anuncio de Google en 2017 de casos reales de colisión llevó a su discontinuación. SHA-256 pertenece a la familia SHA-2, genera hashes de 256 bits y es actualmente el estándar más utilizado. Bitcoin también usa SHA-256. SHA-512 ofrece mayor seguridad con 512 bits pero es más lento. Los sistemas nuevos deberían usar SHA-256 o superior.

03

3. Seguridad y vulnerabilidades de las funciones hash

Las funciones hash tienen tres requisitos de seguridad principales. Primero, la resistencia a la preimagen: debe ser difícil encontrar el original a partir del valor hash. Segundo, la resistencia a la segunda preimagen: debe ser difícil encontrar otra entrada que produzca el mismo hash. Tercero, la resistencia a colisiones: debe ser difícil encontrar dos entradas diferentes que produzcan el mismo hash. MD5 y SHA-1 tienen la resistencia a colisiones comprometida, lo que permite a un atacante crear intencionalmente el mismo hash. Los ataques de tabla arcoíris usan tablas hash precalculadas para el rastreo inverso, pero añadir sal permite defenderse de ello.

04

4. Verificación de integridad de archivos

El hash de un archivo es la forma más efectiva de verificar que un archivo descargado no ha sido alterado. Los sitios de distribución de software proporcionan el valor hash oficial junto con los archivos. Los usuarios calculan el hash del archivo tras la descarga y lo comparan con el valor oficial. Incluso una diferencia de un solo bit produce un hash completamente distinto, detectando así de inmediato cualquier alteración. Es esencial para imágenes ISO de Linux, software de código abierto, transacciones de blockchain, etc. Git también genera un hash SHA-1 para cada commit para garantizar la integridad del código. El hash también puede detectar daños causados por errores de red durante la transferencia de archivos grandes.

05

5. Buenas prácticas para el hash de contraseñas

Nunca almacenes contraseñas en texto plano en una base de datos. Deben convertirse en hash, pero un simple MD5 o SHA-256 resulta inadecuado por ser vulnerable a ataques de tabla arcoíris. Es imprescindible añadir sal. La sal es una cadena aleatoria añadida a la contraseña, que hace que la misma contraseña genere hashes diferentes. Además, se deben usar funciones hash lentas como bcrypt, scrypt o Argon2. Estas ralentizan intencionalmente el cálculo para dificultar los ataques de fuerza bruta. OWASP recomienda Argon2 como prioridad máxima para el hash de contraseñas.

06

6. Tablas arcoíris y sal

Las tablas arcoíris (Rainbow Tables) son enormes bases de datos de valores hash precalculados. Almacenan de antemano los hashes de millones de contraseñas comunes y los comparan con hashes robados para encontrar las contraseñas originales. Por ejemplo, el MD5 de "password123" siempre es "482c811da5d5b4bc6d497ffa98491e38", por lo que puede encontrarse de inmediato en la tabla. La sal se defiende de esto. Al añadir una cadena aleatoria única para cada usuario, la misma contraseña genera hashes diferentes. Al hashear "password123" + "x8k2m9" se obtiene un valor que no está en las tablas arcoíris. La sal puede almacenarse en texto plano en la base de datos, pero cada contraseña debe usar una sal distinta para que sea efectiva.