Glosario

¿Qué es el hashing de contraseñas? Almacenar contraseñas con seguridad mediante una transformación de un solo sentido

El hashing guarda las contraseñas con una transformación de un solo sentido. En qué difiere del cifrado, por qué MD5 o SHA-256 no bastan y qué usar.

Publicado 2026-06-27 Actualizado 2026-10-06 8 min de lectura
En esta página

Nunca deberías guardar una contraseña tal cual en la base de datos. Entonces, ¿cómo se guarda? La respuesta es el hashing. Aquí tienes cómo funciona y los puntos clave para hacerlo con seguridad (sin pasos de ataque).

Hashing ≠ cifrado

Se confunden, pero los objetivos son opuestos. El cifrado es «reversible con una clave, para poder volver a leerlo después». El hashing es «de un solo sentido: no se puede revertir». Una contraseña es información que ni siquiera el operador debería necesitar volver a leer, así que un hash deliberadamente irreversible es lo idóneo.

Cifrado (reversible)

texto plano ⇄ texto cifrado. la clave lo revierte. para datos que vuelves a leer

Hashing (un solo sentido)

contraseña → hash. no se puede revertir. para almacenar contraseñas

Almacena las contraseñas con un hash de un solo sentido. El cifrado (reversible) tiene el objetivo opuesto.

Al iniciar sesión, compruebas «aplica el hash a la contraseña introducida del mismo modo y mira si coincide con el hash almacenado.» Nunca necesitas recuperar el original.

Por qué «MD5/SHA-256 a secas» no basta

MD5 y SHA-256 son hashes rápidos. Esa es una propiedad útil en otros contextos, pero una debilidad para almacenar contraseñas: un atacante puede calcular un número enorme de conjeturas por segundo contra un hash filtrado.

  • Tablas arcoíris: una tabla precalculada gigante de «contraseña común → su hash». Con un hash a secas, basta con buscarlo para encontrar la coincidencia.
  • Fuerza bruta: cuanto más rápido el hash, más conjeturas por unidad de tiempo, es decir, más fácil de romper.

Hashes de uso general frente a hashes de contraseñas

Ambos se llaman «hashes», pero se crearon para trabajos distintos. Solo la columna de la derecha sirve para almacenar contraseñas.

Hash de uso general (MD5, SHA-1, SHA-256)Hash de contraseñas (Argon2id, bcrypt, scrypt, PBKDF2)
Creado paraDetectar manipulación de archivos, firmas, etc.Almacenar contraseñas
VelocidadLo más rápido posibleDeliberadamente lento (ajustable)
SalNo forma parte del diseñoForma parte del diseño (PBKDF2 la recibe de quien lo llama)
Ajuste del costeNo es posibleCoste, iteraciones o memoria; se aumenta con el tiempo
Para almacenar contraseñasNo usarUsar

NIST SP 800-63B-4 también exige almacenar las contraseñas con un esquema de hashing de contraseñas que reciba una sal y un factor de coste como entradas, con el coste tan alto como sea práctico sin perjudicar el rendimiento y aumentándolo con el tiempo.

Las dos salvaguardas

1

Añade una sal (un valor distinto por usuario)

Antes del hashing, mezcla un valor aleatorio que difiera por usuario (una sal). Ahora la misma contraseña se almacena de forma distinta para cada uno, lo que derrota las tablas arcoíris e impide que una sola ejecución de cracking cubra contraseñas reutilizadas entre cuentas.

2

Usa un hash deliberadamente lento y diseñado a propósito

bcrypt / Argon2 / scrypt te permiten hacer el cálculo intencionadamente costoso (un parámetro de coste). Una lentitud que nadie nota en un único inicio de sesión legítimo reduce la fuerza bruta del atacante a un ritmo impracticable. El salteo también viene integrado en ellos.

Casos reales: cuando un aviso de brecha dice «con hash»

Los anuncios de brechas a veces indican si las contraseñas se guardaban en texto plano, con hash o cifradas. Estos son casos que este sitio ha tratado, ordenados por método de almacenamiento.

CasoQué se reveló sobre las contraseñasQué significa para los usuarios
Takufile-bin (2019)Guardadas en texto planoLegibles tal cual. Otros servicios con la misma contraseña también están en riesgo
Sakura Internet (2026)Algunas contraseñas iniciales no tenían hashQuien siga usando una contraseña inicial debe cambiarla ya
Gyazo (2026)Se filtraron hashes de contraseñas; método no reveladoSegún el método, podrían revertirse. La empresa pidió a los usuarios cambiar sus contraseñas

Dos cosas a tener en cuenta al leer un aviso:

  • «Con hash» por sí solo no dice si es seguro. Entre MD5 a secas y un hash lento con sal hay una diferencia enorme en lo fácil que es recuperar las contraseñas
  • Si no se indica el método, actúa como si fuera débil. Cambia la contraseña en ese servicio y en cualquier otro donde uses la misma

Puedes comprobar si tu dirección de correo aparece en brechas pasadas con cómo comprobar si tu contraseña se ha filtrado.

Cómo comprobar tu propio sitio y tus cuentas

1

Como usuario: observa cómo funciona el restablecimiento de contraseña

Si «olvidé mi contraseña» te envía por correo tu contraseña original, el servicio muy probablemente la guarda en texto plano o en una forma reversible. No uses allí una contraseña que uses en otro sitio.

2

Como usuario: comprueba la fortaleza de tu contraseña

El hashing protege mejor las contraseñas largas y difíciles de adivinar. Comprueba una estimación aproximada de su fortaleza con el comprobador de fortaleza de contraseñas, y deja su almacenamiento a un gestor de contraseñas.

3

Como desarrollador: comprueba qué función guarda las contraseñas

Localiza las funciones que usa tu código para guardar y verificar contraseñas. password_hash() de PHP, la autenticación integrada de Django o una biblioteca de bcrypt/Argon2 son específicas para contraseñas y cubren lo básico. Cualquier llamada directa a md5(), sha1() o sha256 es candidata a migración.

4

Como desarrollador: comprueba los valores almacenados y la configuración

Cómo identificar los hashes almacenados, la configuración mínima de OWASP y cómo migrar desde algoritmos débiles se explican en cómo almacenar contraseñas con seguridad.

La visión de este sitio: no lo construyas tú mismo

Suponer que «MD5 más una sal es suficiente» es un error común. El almacenamiento seguro de contraseñas también depende de generar y guardar la sal, ajustar el coste y manejar las diferencias de tiempo. En lugar de montar eso tú mismo, apóyate en la función oficial de contraseñas de tu lenguaje/framework (la mayoría usan bcrypt/Argon2 por debajo). Para sistemas nuevos, haz de Argon2id tu primera opción.

Fuentes (primarias)

  • NIST, "SP 800-63B-4 Digital Identity Guidelines: Authentication and Authenticator Management" (agosto de 2025) — pages.nist.gov (esquemas de hashing que reciben una sal y un factor de coste; aumentar el coste con el tiempo)
  • OWASP, "Password Storage Cheat Sheet" — cheatsheetseries.owasp.org (hashing frente a cifrado, algoritmos recomendados, factor de trabajo)
  • RFC 9106, "Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications" — rfc-editor.org
  • Las fuentes de cada caso (los anuncios de las propias empresas) figuran en los artículos enlazados de este sitio

Sigue leyendo

Clasificación

CWE clasifica los tipos de debilidad que causan las vulnerabilidades; MITRE ATT&CK clasifica las técnicas de los atacantes. Ambos los mantiene MITRE y se usan ampliamente para etiquetar vulnerabilidades y reglas de detección.

ATT&CK (técnica de ataque)

CWE™: Copyright © 2006–2026, The MITRE Corporation. CWE is a trademark of The MITRE Corporation. The MITRE Corporation hereby grants you a non-exclusive, royalty-free license to use CWE for research, development, and commercial purposes. Any copy you make for such purposes is authorized on the condition that you reproduce MITRE’s copyright designation and this license in any such copy. CWE Terms of Use

© 2026 The MITRE Corporation. This work is reproduced and distributed with the permission of The MITRE Corporation. MITRE ATT&CK and ATT&CK are registered trademarks of The MITRE Corporation. The MITRE Corporation (MITRE) hereby grants you a non-exclusive, royalty-free license to use ATT&CK® for research, development, and commercial purposes. Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ATT&CK Terms of Use

FAQ

Q¿En qué se diferencia el hashing del cifrado?
A

El cifrado es reversible: con la clave puedes descifrar los datos de vuelta, que es lo que quieres para datos que volverás a leer. El hashing es de un solo sentido: no se puede revertir. En realidad no necesitas poder volver a leer una contraseña, ni siquiera tú, así que un hash deliberadamente irreversible encaja. Aunque roben la base de datos, no puedes extraer las contraseñas originales directamente de los hashes.

Q¿Es bastante seguro hacer hashing con MD5 o SHA-256?
A

No, no por sí solos. MD5/SHA-256 son hashes 'rápidos', así que un atacante puede probar un número enorme de conjeturas por segundo, y las contraseñas comunes caen ante la fuerza bruta o las tablas arcoíris (tablas de búsqueda precalculadas). Para hacerlo seguro, añade una 'sal' por usuario y usa un hash deliberadamente lento y diseñado a propósito (bcrypt, Argon2 o scrypt).

Q¿Cuál debería usar en la práctica?
A

Para sistemas nuevos, Argon2 (sobre todo Argon2id) es la primera opción, con bcrypt o scrypt como alternativas sólidas. Todos integran en su diseño el salteo y un factor de coste ajustable. En lugar de montar MD5+sal tú mismo, usa estas implementaciones estándar (las funciones oficiales de tu lenguaje/framework): es más seguro y más fiable.

Q¿Se puede descifrar una contraseña con hash?
A

Un hash no se puede calcular de vuelta hasta la contraseña. Pero se pueden aplicar el mismo hash a contraseñas candidatas y comprobar si coinciden. Eso hace que las contraseñas cortas o comunes sean fáciles de encontrar, sobre todo cuando el algoritmo es rápido. Si la contraseña es larga, no está reutilizada y se guarda con un hash lento con sal, encontrarla no resulta práctico.

Q¿Por qué un servicio no me dice mi contraseña antigua cuando la olvido?
A

Porque un servicio que aplica el hash correctamente tampoco tiene tu contraseña original. Por eso el proceso es un restablecimiento (eliges una nueva). A la inversa, un servicio que te envía por correo tu contraseña original muy probablemente la guarda en texto plano o en una forma reversible.

Q¿Debo cambiar mi contraseña si una empresa dice que se filtraron hashes de contraseñas?
A

Sí. Las empresas a menudo no revelan el método de hash, y un método débil se puede revertir. Cámbiala también en cualquier otro servicio donde uses la misma contraseña o una ligeramente modificada.