盐和地穴援助

时间:2012-11-23 22:36:39

标签: php html sql

我收到了登录页面,并且我也使用它来验证用户名和密码。

我坚持检查数据库中提供的密码。这是因为我在注册时已完成此代码以提高安全性。

$hashed_password = crypt('pass1'); 

是否有人能够帮助我创建一个if语句来检查数据库加密密码到提供的用户密码。我真的很感激。

登录页面中的

....这是我的密码帖子。

$password = htmlentities(trim($_POST['password']));

1 个答案:

答案 0 :(得分:1)

// let the salt be automatically generated
$hashed_password = crypt('mypassword'); 

// You should pass the entire results of crypt() as the salt for comparing
if (crypt($user_input, $hashed_password) == $hashed_password) {
   echo "Password verified!";
}

修改

crypt()有两个参数,第二个是盐(see wiki)。如果没有提供,盐将自动生成(因此可以认为是随机的)。盐在整个算法中使用,因此要比较您想要crypt()用户提供的密码和您之前使用的相同盐,否则结果会有所不同。为了使这个可能的盐被添加到地穴结果(在开始时),因此为了比较目的提供先前的结果只需用旧盐({1}}提供旧盐(根据所使用的alghoritm,它是2或12个字符)。