我想在數據庫中使用MD5散列註冊密碼,登錄時也是這樣,但問題是在註冊過程中密碼被散列,但在登錄時系統工作,因爲這是不正確的密碼使用md5散列密碼
register.php
//ADD MD5 hash to the password
$db_pass=md5($pass1);
//************Insert all the user's input to the database**************************//
$query = mysql_query("INSERT INTO user(user_name, first_name, last_name, governorate,
district, village, birth_date, email_address, specialization, password,
registered_date)VALUES('$username', '$firstname', '$lastname', '$governorate',
'$district', '$village', '$bdate', '$email', '$specialization', '$db_pass',
now())") or die("could not insert data");
的login.php
$pass = md5($pass);
$sql=mysql_query("SELECT user_id, email_address, first_name, user_name FROM user
WHERE email_address='$email'
AND password='$pass'LIMIT 1") or die("error in user table");
你能更清楚地陳述你的問題是什麼嗎?我不知道... – 2013-05-11 09:28:59
哈希是好的,但無鹽MD5仍然很不安全(所有無鹽哈希都容易受到彩虹表攻擊,特別是MD5已被證明是不安全的)。考慮使用鹽漬SHA2變體。每個密碼應該有自己的鹽 - 全球鹽仍然允許使用彩虹桌。 – cdhowie 2013-05-11 09:30:28
如果你只是實現這個,現在停下來並使用像https://github.com/ircmaxell/password_compat這樣的適當的密碼哈希方案。無鹽MD5現在已經不夠用了。 – deceze 2013-05-11 09:30:35