繁体   English   中英

使用md5哈希密码

[英]hashing the password using 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");

您不应该使用MD5。 它是不安全的,以太快了,以至于您不能使用它来进行密码哈希(如果您不明白为什么使用快速密码哈希算法是个坏主意,请查看Wiki页面上的蛮力攻击 ) 。 您应该考虑使用Bcrypt之类的东西

您可以通过crypt函数使用Bcrypt。

$userPassword = 'testpassword';
$hashed = crypt($userPassword, '$2a$15$usesomesillystringforsalt$');
echo $hashed;

如上文所述,ircmaxell在github上有一个相当不错的库 该库与password_hash函数具有向前兼容性,该函数将在PHP 5.5(当前在BETA)中可用。

您确定$ pass1和$ pass相同吗! 只需检查一下,两者在散列之前是否相同即可。

由于MD5不安全,请使用带有盐的sha256 / sha512或使用phpass生成强哈希(WordPress使用phpass生成密码哈希)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM