En la actualidad existen dos métodos muy utilizados para encriptar contraseñas y hacerlas más seguras. En primer lugar, SHA-1 que es un algoritmo que resume un mensaje de longitud máxima 264 bits (más de dos mil millones de Gigabytes) y produce como salida un resumen de 160 bits. Y MD5, la más conocida, que es, prácticamente, el algoritmo que todos los CMS utilizan para almacenar sus passwords.
Básicamente, lo que hace el algoritmo MD5 es convertir y reducir caracteres hasta 128 bits representados en 32 dígitos hexadecimales. Por ejemplo, si nuestra contraseña es “admin”, el hash que almacenamos en la Base de Datos será "21232f297a57a5a743894a0e4a801fc3". ¿Qué pasaría si alguien, aprovechando un bug del CMS, tuviera acceso a la BD y obtenga este hash? En teoría, MD5 produce un hash de ida; esto es, que no hay manera de descubrir cuál fue el texto que lo creo, no hay manera de desencriptarlo...