Вам не нужно расшифровывать свои пароли, чтобы проверить их, для этого достаточно одного способа шифрования. Идея состоит в том, что когда пользователь вводит пароль, вы шифруете его тем же способом (используя тот же алгоритм и «соль»), а затем сравниваете с зашифрованным, хранящимся в вашей базе данных. Если они равны, с большой вероятностью это означает, что это тот же самый оригинальный пароль. Таким образом, вы не позволяете никому - администратору или любому злоумышленнику - узнать исходные пароли, которые пользователи используют на вашем веб-сайте.
В остальном все очень просто, в вашей базе данных есть таблица, которая содержит логины пользователей, зашифрованные пароли и, возможно, некоторую информацию профиля (полное имя и т. Д.).
Я обычно использую следующую функцию для хеширования пользовательских паролей:
$password_hash = sha1(MY_SALT_1 . $login_name . MY_SALT_2 .
$password . MY_SALT_3);
где MY_SALT_ * - произвольные предопределенные строки, может быть, например, «темная», «сторона», «луна» (или, на самом деле, чем меньше связано - тем лучше).