How to compare crypted password with stored in MySQL
| From: | Eduardo Bejar | Date: | Wed, 01 Feb 2006 22:20:36 +0000 |
| Subject: | How to compare crypted password with stored in MySQL | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-41166@lists.php.net to get a copy of this message | ||
Hi,
I have a MySQL database with encrypted passwords, that were created with:
$input_password = $_POST["password"];
$salt = "ab"; /// Salt is always two character string and the same for all
$password_to_save = crypt($input_password, $salt);
and then saved in MySQL with: insert into password_table set
passwd='$password_to_save'; (other columns are inserted also, but passwd is
the one related to this question).
Now, to check if a password is valid, I set $salt as the first two
characters of the stored encrypted password, and with this salt I crypt and
compare both:
$salt = substr ($password_stored_in_mysql, 0,2);
$password_to_check = crypt($input_password, $salt);
if ($password_to_check == $password_stored_in_mysql) echo "Password is the
same";
This used to work on a PC that runs PHP 4.1.2 and MySQL 3.23.36. But when
trying this on other PC that runs PHP 4.3.11 and MySQL 3.23.58, I get no
password match, as $password_to_check is different from the one stored in
the database.
In example: $password_to_check shows "ab2vG8KakAAGY" and the stored one is
"abFcR2QZ/2fUU".
What could be causing this? How should I compare the passwords?
Thank you,
Edo