no se trata de cifrar y descifrar
cuando registras un usuario capturas la contraseña -> la cifras -> la guardas
y cuando el usuario inicia sesion capturas nuevamente la contraseña -> la cifras -> la comparas con la que guardaste en la base de datos... asi no las guardas como texto... por lo general se usa un CHAR antes que un VARCHAR, por la simple razon que si usas MD5 o SHA1 el hash de la contraseña es de un ancho fijo y no contiene caracteres que no sean alfanumericos, por lo tanto un campo varchar en la base de datos se vuelve.. innecesario?
salu2