Puedes usar varios algoritmos "hash" .. tanto desde Mysql y sus funciones correspondiente .. como desde PHP y guardandolo en campos tipo VARCHAR simples ...
Estos son MD5(), crypt() .. (tanto en PHP como en Msyql tienes dichas funciones) .. Ambos son "en un solo sentido" . .Osese, no hay posibilidad de desencriptar ..
Si quieres usar "encriptación" en ambos sentidos deberias usar:
Mcrypt
http://www.php.net/manual/en/ref.mcrypt.php
Esto requiere de esa liberia instalada en tu servidor ..
En Mysql tienes por ejemplo tambien el tipo de campo "password" .. (en un solo sentido) ..
Y ENCRYPT() y DECODE() en ambos ...
más info:
http://www.mysql.com/doc/en/Miscella...functions.html
La forma de trabajar cuando trabajas con contraseñas de "un solo sentido" es:
1) encriptas el password en la BD en su campo correspondiente a la hora de dar de alta dicho registro ..
2) cuando se identifique alguien en el sitema . encriptas la contraseña que entra por tu formulario (con el mismo "hash" que usases .. ejemplo MD5() .. ) y lo comparas con el que tienes en tu BD .. si es correcto .. lo dejas pasar..
Con esto, pierdes la opción de recordar contraseña .. Pero siempre puedes generar un password temporal si solucita un recordad contraseña y es validado por otros médios que uses (frase-respuesta .. envio a tal e-mail .. etc...)
Un saludo,