Tools mentioned in this article
Open the browser-based tool while you read and try the workflow immediately.

“Guardamos las contraseñas en Base64” — esa frase describe un malentendido de seguridad grave. Codificación, hash y cifrado transforman todos una cadena en otra forma, pero sus propósitos son completamente distintos, y confundirlos lleva a fugas de datos y diseños rotos.
Este artículo aclara los tres con una tabla comparativa y ejemplos concretos, para que elija el correcto en cada situación.
La respuesta directa: en qué se diferencian los tres
| Propósito | ¿Reversible? | ¿Necesita clave? | Ejemplos | |
|---|---|---|---|---|
| Codificación | Representar datos en otro formato | Sí (cualquiera) | No | Base64, codificación URL |
| Hash | Producir una huella digital de longitud fija y de un solo sentido | No | No | SHA-256, HMAC |
| Cifrado | Mantener datos en secreto; solo las partes autorizadas pueden restaurarlos | Sí (con la clave) | Sí | AES, RSA |
Las conclusiones: la codificación no aporta ningún secreto, el hash no puede revertirse, y el cifrado es el único mecanismo diseñado para guardar secretos.
Codificación: transformación para compatibilidad, no para secreto
La codificación simplemente reescribe los datos en otra representación. Sin clave, sin contraseña — cualquiera puede revertirla. No aporta ninguna confidencialidad.
Base64, por ejemplo, existe para transportar datos binarios o caracteres especiales de forma segura como texto:
Hello, World! →(codificación Base64)→ SGVsbG8sIFdvcmxkIQ==
SGVsbG8sIFdvcmxkIQ== parece aleatorio, pero péguelo en un conversor Base64 y cualquiera puede restaurar el original al instante. La codificación URL — para transportar caracteres especiales en URLs — pertenece a la misma familia.
Uso incorrecto común: codificar en Base64 una clave de API o contraseña pensando que queda “oculta” es peligroso. Base64 no es cifrado y no aporta nada al secreto.
Hash: una huella digital de un solo sentido
Un hash calcula un resumen de longitud fija a partir de datos de entrada — estrictamente de un solo sentido. La misma entrada siempre produce el mismo resumen, pero los datos originales no pueden recuperarse a partir de él.
password123 →(SHA-256)→ ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f
Cambie la entrada aunque sea ligeramente y la salida cambia por completo. Estas propiedades hacen que el hash sea adecuado para:
- Almacenamiento de contraseñas: guarde el hash en lugar del texto plano, y compare hashes al iniciar sesión (en la práctica, con una sal y bcrypt/Argon2).
- Comprobaciones de integridad: compare hashes de archivos o mensajes para detectar alteraciones.
- Firmas: los HMAC y las firmas JWT garantizan que los datos no se han modificado.
Pruebe SHA-256 o HMAC en el generador de hash y observe cómo la salida se transforma por completo al editar la entrada.
Punto clave: la irreversibilidad es la esencia del hash. Precisamente por eso es adecuado para el almacenamiento de contraseñas — y por eso es incorrecto para cualquier cosa donde necesite recuperar los datos originales.
Cifrado: secreto reversible protegido por una clave
El cifrado transforma los datos en una forma ilegible usando una clave, de modo que solo quien posea la clave correcta puede descifrarlos. A diferencia de la codificación, no puede revertirse sin la clave; a diferencia del hash, sí puede revertirse con ella. Este es el único mecanismo que realmente guarda secretos.
- Cifrado simétrico (AES, …): la misma clave cifra y descifra. Rápido; se usa para datos en reposo.
- Cifrado de clave pública (RSA, …): se cifra con la clave pública, se descifra con la clave privada. Se usa para el intercambio de claves y firmas digitales.
HTTPS, el cifrado de bases de datos en reposo y la protección de archivos confidenciales son todos territorio del cifrado. La gestión de claves — no filtrarlas, almacenarlas correctamente — determina directamente la seguridad que obtiene.
Tabla de decisión rápida
| Lo que quiere hacer | Qué usar |
|---|---|
| Transportar caracteres especiales de forma segura en URLs o JSON | Codificación (Base64 / codificación URL) |
| Guardar contraseñas de forma segura | Hash (bcrypt / Argon2, con sal) |
| Verificar que un archivo no ha sido alterado | Hash (SHA-256) |
| Mantener datos en secreto pero recuperables más tarde | Cifrado (AES / RSA) |
| Proteger el tráfico de escuchas | Cifrado (TLS/HTTPS) |
| Verificar que un token no ha sido alterado | Firma basada en hash (HMAC / JWT) |
Errores clásicos
- “Cifrar” con Base64: como arriba — secreto cero. Nunca para datos confidenciales.
- Guardar contraseñas cifradas: descifrable significa que una clave filtrada expone todas las contraseñas de golpe. Las contraseñas nunca necesitan descifrarse, así que un hash con sal es el diseño correcto.
- SHA-256 plano para contraseñas: demasiado rápido, así que la fuerza bruta es barata, y se aplican tablas rainbow. Use sal más un algoritmo deliberadamente lento como bcrypt o Argon2.
- Implementar su propia criptografía: use bibliotecas estándar probadas. Las implementaciones caseras de cifrado casi siempre son vulnerables.
Resumen
Nombres parecidos, roles opuestos. La codificación cambia la representación (sin secreto), el hash es una huella digital irreversible, el cifrado es un secreto reversible protegido por clave. Con esa distinción clara, las elecciones se vuelven naturales: haga hash de sus contraseñas, cifre su tráfico, codifique sus URLs. Para ver el comportamiento en la práctica, pruebe el conversor Base64, el generador de hash y el decodificador JWT.
Preguntas frecuentes
¿Por qué Base64 no es cifrado?
Base64 no usa clave y sus reglas de transformación son públicas, así que cualquiera puede revertirlo al instante. Sin ningún elemento de secreto, se clasifica como codificación (un cambio de representación), no como cifrado. No puede usarse para ocultar información confidencial.
¿Las contraseñas deberían guardarse con hash o cifradas?
Con hash. Las contraseñas nunca necesitan descifrarse, así que un hash de un solo sentido (bcrypt o Argon2 con sal) es lo adecuado. Guardarlas cifradas significa que una clave de descifrado filtrada expone todas las contraseñas a la vez.
¿Es realmente imposible revertir un hash?
Computacionalmente, los datos originales no pueden derivarse del resumen. Sin embargo, las contraseñas comunes pueden coincidir mediante tablas precalculadas (rainbow tables) — por eso importan las sales por usuario y los algoritmos deliberadamente lentos resistentes a la fuerza bruta.
¿Los tokens JWT están cifrados?
Un JWT típico (un JWS firmado) está firmado, no cifrado. El payload solo está codificado en Base64URL, y cualquiera puede leerlo con un decodificador JWT. La firma solo detecta alteraciones — así que nunca ponga secretos directamente en un JWT. Cuando se requiere confidencialidad, use cifrado (JWE).