我想在数据库中使用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