Hashear no es cifrar
Lab quirúrgico para no volver a confundir hash, encoding y cifrado. base64 se deshace, SHA-256 no. Con playground interactivo para verlo.
Antes de empezar necesitás
- Saber qué es texto plano vs binario
Al terminar vas a poder
- Distinguir encoding (base64) de hash (SHA-256) de cifrado
- Entender por qué un hash no se 'desencripta'
- Reconocer cuándo base64 NO protege nada
Tres palabras que se usan como sinónimos y no lo son: encoding, hashing y cifrado. Confundirlas es la raíz de un montón de bugs de seguridad. Este lab las separa para siempre.
La diferencia, en una línea
encoding (base64) → reversible, sin clave → para transportar datos
hashing (SHA-256) → irreversible, una vía → para verificar integridad
cifrado (AES) → reversible, con clave → para confidencialidad
- base64 transforma bytes en texto seguro de transportar. Cualquiera lo deshace: no hay secreto. No protege nada.
- SHA-256 produce una huella de tamaño fijo. No se puede volver al original: es de una sola vía.
- Cifrado sí protege, pero necesita una clave para ir y volver.
Por qué un hash no se “desencripta”
Un hash tira información a la basura: muchos textos distintos pueden caer en huellas distintas, pero del resultado no hay vuelta atrás. Por eso:
- El mismo input siempre da el mismo hash (sirve para comparar).
- Cambiar un solo carácter cambia la huella entera (efecto avalancha).
- No existe “desencriptar un SHA-256”: lo que se hace es comparar hashes.
Probalo
Escribí lo mismo en los dos. Fijate que base64 vuelve al original y SHA-256 no; y cómo cambiar una letra altera todo el hash.
Playground: base64 vs SHA-256
Escribí texto y compará. base64 es encoding reversible (no protege nada). SHA-256 es un hash de una sola vía: no se puede deshacer. Todo corre en tu navegador.
base64 (reversible)
SHA-256 (una vía)
En la terminal
# encoding: va y vuelve, sin secreto
echo -n 'hola' | base64 # aG9sYQ==
echo -n 'aG9sYQ==' | base64 -d # hola
# hash: una sola vía, determinístico
echo -n 'hola' | sha256sum
echo -n 'holb' | sha256sum # una letra distinta = huella totalmente distinta Lo que practicás en este lab
Llevátelo a tu repo si querés, pero no es obligatorio: es tu aprendizaje.
- Captura del playground con un mismo texto en base64 y en SHA-256
- Writeup de 3 líneas: un caso donde viste base64 usado como si fuera seguridad
Reto
Hasheá la misma palabra dos veces con sha256sum: tiene que dar idéntico. Cambiá una sola letra y mirá cómo cambia entero. Después codificala en base64 y volvé al texto original con base64 -d.
Resolvelo y escribí dos líneas explicando qué pasó. Con eso lo fijás.