2011-12-29 117 views
3

我使用PHPass将用户密码存储在我的应用程序中,因为它比md5或sha1更安全。我有一个关于如何在密码中使用salt的问题。正确实施PHPass

从我收集的,我使用它像这样当您插入用户:

$pwdHasher = new PasswordHash(8, false); 
$hash = $pwdHasher->HashPassword($input_password); 

,然后当你检查登录的用户的详细信息,你这样做:

$pwdHasher = new PasswordHash(8, FALSE); 
if ($pwdHasher->CheckPassword($input_password, $hash_from_db)) { 
    echo 'password correct'; 
} else { 
    echo 'wrong credentials'; 
} 

但我在那里看到没有使用盐的东西。从我读过的内容来看,我的用户表应该有一个额外的字段用于散列密码时使用的salt,但PHPass的CheckPassword方法不会接受盐?

谢谢。

+0

可能的重复[盐包含在一个phpass散列或你需要盐的输入?](http://stackoverflow.com/questions/2596348/is-the-salt-contained-in-a- phpass-hash-or-do-you-need-to-salt-its-input) – 2011-12-29 22:55:41

+0

我会离题告诉你改用我的库。但那只是错误的。 PHPass可能会自己创建salt,然后将其存储在哈希中。只需快速浏览一下文档。 – 2011-12-29 22:59:18

回答

5

当Passpass加密时,Phpass会添加一个salt,所以不需要添加单独的salt并将其存储在数据库中。