GarToolsPremium Tools
Seguridad

¿Qué es el hashing? Guía completa sobre funciones hash y su uso en seguridad

Descubre qué es una función hash, cómo funciona SHA-256, MD5 y otros algoritmos, y por qué el hashing es fundamental en seguridad, blockchain y verificación de archivos.

Por Ferran Garola Bonilla8 min de lectura
Imagen ilustrativa del artículo: ¿Qué es el hashing? Guía completa sobre funciones hash y su uso en seguridad
Compartir

¿Qué es una función hash?

Una función hash es un algoritmo matemático que transforma cualquier cantidad de datos (un archivo, un texto, una contraseña) en una cadena de longitud fija llamada "digest" o "hash". Es como una huella digital de los datos: única, reproducible y prácticamente imposible de revertir.

Por ejemplo, el hash SHA-256 de "Hola mundo" es siempre ca8f60b2cc7f05837d98b208b57fb6481553fc5f1219d59618fd025002a66f5c. No importa cuántas veces lo calcules ni en qué ordenador: el resultado es idéntico. Pero si cambias una sola letra — "hola mundo" con minúscula — el hash cambia completamente: 0ac8a7f9e0ac4a95ed4b3f8b4f1c2c1bf4f4bfb64e3f11e0bf85ac9d9ea17abc.

Esta propiedad se conoce como "efecto avalancha": un cambio mínimo en la entrada produce un cambio drástico en la salida.

Propiedades fundamentales de las funciones hash

1. Determinismo

La misma entrada siempre produce la misma salida. Esto es esencial para verificación: si calculas el hash de un archivo descargado y coincide con el publicado por el autor, sabes que el archivo no fue modificado.

2. Irreversibilidad (función de un solo sentido)

No se puede recuperar la entrada original a partir del hash. Esto es lo que diferencia el hashing de la encriptación: la encriptación está diseñada para ser reversible (con la clave correcta), pero el hashing no.

3. Resistencia a colisiones

Es computacionalmente inviable encontrar dos entradas diferentes que produzcan el mismo hash. Para SHA-256, con 2²⁵⁶ posibles salidas, la probabilidad de colisión accidental es astronómicamente baja.

4. Longitud fija

Sin importar si la entrada es un tweet de 280 caracteres o un archivo de 10 GB, el hash tiene siempre la misma longitud. SHA-256 produce 256 bits (64 caracteres hexadecimales), MD5 produce 128 bits (32 caracteres hex).

Algoritmos hash más utilizados

MD5 (Message Digest 5)

  • Longitud: 128 bits (32 caracteres hex)
  • Velocidad: muy rápida
  • Estado: obsoleto para seguridad (colisiones demostradas en 2004)
  • Uso actual: checksums de archivos (no sensibles), detección de duplicados

SHA-1 (Secure Hash Algorithm 1)

  • Longitud: 160 bits (40 caracteres hex)
  • Estado: deprecado desde 2017 (colisiones demostradas por Google)
  • Uso actual: legacy, Git (que planea migrar a SHA-256)

SHA-256 (SHA-2 family)

  • Longitud: 256 bits (64 caracteres hex)
  • Estado: estándar actual recomendado
  • Uso: certificados TLS/SSL, blockchain Bitcoin, firmas digitales, verificación de integridad

SHA-3 (Keccak)

  • Longitud: configurable (224, 256, 384, 512 bits)
  • Estado: último estándar NIST (2015), diseño completamente diferente a SHA-2
  • Uso: aplicaciones que requieren máxima seguridad futura, como respaldo ante posible debilidad de SHA-2

bcrypt, scrypt, Argon2

Funciones hash especializadas para contraseñas. Son deliberadamente lentas e incluyen "salt" (datos aleatorios) para prevenir ataques de fuerza bruta y tablas rainbow. Argon2 ganó el Password Hashing Competition en 2015 y es la recomendación actual.

Casos de uso reales del hashing

Almacenamiento seguro de contraseñas

Ningún sistema responsable almacena contraseñas en texto plano. En su lugar, almacenan el hash de la contraseña. Cuando inicias sesión, el sistema calcula el hash de lo que escribiste y lo compara con el almacenado. Si coinciden, la contraseña es correcta — sin necesidad de almacenar nunca la contraseña real.

Verificación de integridad de archivos

Cuando descargas software, el desarrollador suele publicar el hash SHA-256 del archivo. Después de descargar, calculas el hash local y lo comparas. Si coinciden, el archivo no fue corrompido ni modificado durante la transferencia.

Esto es exactamente lo que puedes hacer con nuestro generador de hash: pega cualquier texto y obtén sus hashes MD5, SHA-1 y SHA-256 al instante, directamente en tu navegador.

Blockchain y criptomonedas

Bitcoin usa SHA-256 extensivamente. Cada bloque contiene el hash del bloque anterior, creando una cadena inmutable. La "minería" consiste en encontrar un nonce (número) que, al combinarse con los datos del bloque y hashearse, produzca un hash que empiece con cierta cantidad de ceros.

Firmas digitales

Las firmas digitales no firman el documento completo (que puede ser enorme). En su lugar, firman el hash del documento. El receptor calcula el hash del documento recibido y verifica la firma contra ese hash.

Detección de duplicados y deduplicación

Servicios de almacenamiento en la nube como Dropbox usan hashes para detectar archivos duplicados. Si dos usuarios suben el mismo archivo, el sistema puede almacenar una sola copia y referenciarla desde ambas cuentas.

Estructuras de datos: tablas hash

Las tablas hash (hash tables o hash maps) son una de las estructuras de datos más fundamentales en programación. Usan funciones hash para mapear claves a posiciones en un array, proporcionando acceso en tiempo O(1) promedio. Los diccionarios de Python, los objetos de JavaScript y los HashMap de Java son implementaciones de tablas hash.

¿Cómo se rompe un hash?

Dado que los hashes son irreversibles, "romper" un hash no significa desencriptarlo, sino encontrar una entrada que produzca ese hash:

Fuerza bruta

Probar todas las combinaciones posibles hasta encontrar una que genere el hash objetivo. Con hardware moderno (GPUs), se pueden calcular miles de millones de hashes MD5 por segundo.

Ataques de diccionario

Probar contraseñas comunes y sus variaciones. Mucho más eficiente que fuerza bruta pura si la contraseña es predecible.

Tablas rainbow

Tablas precomputadas que mapean hashes a sus entradas originales. Para MD5, existen tablas rainbow con billones de entradas. La defensa es el "salt": añadir datos aleatorios antes del hashing, haciendo que las tablas precomputadas sean inútiles.

Buenas prácticas de hashing en 2026

Implementar hashing de forma segura requiere seguir una serie de buenas prácticas que han evolucionado con el tiempo. Aquí repasamos las más importantes para cualquier desarrollador o administrador de sistemas.

Elige el algoritmo adecuado según el caso de uso

No todos los algoritmos hash sirven para lo mismo. Para almacenar contraseñas, utiliza siempre funciones diseñadas específicamente para ese fin, como bcrypt, scrypt o Argon2. Estos algoritmos son deliberadamente lentos y consumen recursos, lo que dificulta enormemente los ataques de fuerza bruta. Nunca uses MD5 o SHA-1 para contraseñas, ya que son demasiado rápidos y vulnerables a ataques modernos.

Para verificar la integridad de archivos o datos en tránsito, SHA-256 sigue siendo una opción sólida y ampliamente soportada. Si necesitas máximo rendimiento en aplicaciones no criptográficas, como tablas hash internas o checksums de datos, algoritmos como xxHash o MurmurHash ofrecen velocidades extremas sin pretender seguridad criptográfica.

Siempre usa salt para contraseñas

El salt es un valor aleatorio que se concatena con la contraseña antes de aplicar el hash. Cada usuario debe tener un salt único. Esto significa que aunque dos usuarios tengan la misma contraseña, sus hashes almacenados serán completamente diferentes. El salt se almacena junto al hash en la base de datos, ya que su propósito no es ser secreto, sino invalidar las tablas rainbow y dificultar ataques masivos.

Frameworks modernos como Django, Laravel y Spring Security implementan el salting automáticamente cuando usas sus sistemas de autenticación. Si construyes tu propio sistema, asegurate de generar salts criptográficamente seguros con funciones como crypto.randomBytes en Node.js o os.urandom en Python.

Pepper: una capa adicional de protección

Además del salt, algunas arquitecturas utilizan un "pepper", que es un valor secreto compartido por todas las contraseñas, almacenado fuera de la base de datos (por ejemplo, en una variable de entorno o en un servicio de gestión de secretos). A diferencia del salt, el pepper no se guarda junto al hash. Esto añade una capa de protección: incluso si un atacante obtiene la base de datos completa, no puede verificar contraseñas sin conocer el pepper.

Hashing en la vida cotidiana: casos que quizás no conocías

El hashing no solo vive en servidores y bases de datos. Está presente en muchas situaciones cotidianas que probablemente usas sin darte cuenta.

Control de versiones con Git

Cada commit en Git se identifica por un hash SHA-1 (y en versiones recientes, SHA-256) que resume el contenido del commit, su autor, la fecha y el hash del commit padre. Este sistema garantiza que cualquier alteración del historial sea detectable. Si alguien modifica un commit antiguo, todos los hashes posteriores cambian, revelando la manipulación.

Descarga segura de software

Cuando descargas software de fuentes oficiales, muchas veces encuentras un hash SHA-256 junto al enlace de descarga. Después de descargar el archivo, puedes calcular su hash localmente y compararlo con el publicado. Si coinciden, sabes que el archivo no fue alterado durante la descarga ni interceptado por un tercero.

Redes peer-to-peer y torrents

Los protocolos de descarga como BitTorrent usan hashes para verificar que cada fragmento del archivo descargado es correcto. Cada bloque tiene su propio hash, y el cliente torrent verifica automáticamente la integridad de cada pieza recibida. Si un bloque llega corrupto o manipulado, se descarta y se solicita de nuevo.

Sistemas de votación electrónica

Algunos sistemas de votación electrónica utilizan cadenas de hashes para crear un registro auditable de votos sin revelar la identidad del votante. Cada voto se hashea y se enlaza criptográficamente con los anteriores, creando un registro inmutable verificable por observadores independientes.

Conclusión

Las funciones hash son pilares invisibles de la seguridad digital moderna. Desde proteger tus contraseñas hasta garantizar la integridad de las transacciones en blockchain, el hashing está presente en cada capa de la tecnología que usamos a diario. Usa nuestro generador de hash online para experimentar con diferentes algoritmos y ver cómo cualquier cambio en la entrada produce un hash completamente diferente.

¿Te ha sido útil este artículo?

Suscríbete a la newsletter mensual: un correo cuando publicamos algo igual de útil. Sin spam.

¿Te ha gustado?
Compártelo con alguien a quien le pueda ser útil.

Los comentarios se activarán próximamente. ¿Quieres compartir algo sobre este artículo? Escríbenos en /contacto.

Continuar leyendo
Volver al blog