Siempre lo explicaba técnicamente y no me entendían nada."Olvidé mi contraseña, pero he conseguido el Hash almacenado en la DB ¿Cómo lo decodifico?"
Ahora respondo de esta manera:
Imagina que tu contraseña está escrita en papel:
La diferencia entre el papel cortado (codificado) y el papel quemado (hash) es evidente, porque el papel cortado podría ser restaurado (decodificado), mientras que es imposible restaurar el papel teniendo sólo las cenizas.
- Cuando dices codificar imagina que el papel es cortado como si fuera un rompecabezas, y esas partes son las que se almacenan en la DB.
- Cuando se aplica una función Hash al papel, imagina que el papel es quemado y las cenizas son almacenadas en la DB.
No se puede decodificar un Hash.¿Y cómo se puede identificar un usuario si sólo se almacena el papel cortado o quemado?
- El usuario provee el papel con la contraseña
- El sistema quema o corta el papel
- El sistema compara las partes o cenizas del papel con las partes o cenizas de la BD para ese usuario
- Si son iguales el usuario es admitido.
La única forma de restaurar el Hash de una palabra es comparándolo con el Hash de cada combinación de caracteres posibles hasta obtener una colisión.