在提出问题之前,请尝试搜索StackOverflow。许多问题已经得到解答。例如:
您好
我希望即使在数据库中也没有人能看到我的密码..
所以我使用了像这样的哈希函数
$passowrd_hash=hash('shal',$_POST['password']);
现在我可以轻松地将此password_hash值存储到数据库中。它会像加密形式一样。
现在用户知道其原始密码,他不知道这个加密密码。
现在如果他尝试登录这个原始密码......他无法登录。
有没有任何方法可以解密,用户可以登录。所以他既可以实现密码安全,又可以重新登录。
怎么做?
答案 0 :(得分:13)
您需要哈希用户输入密码并比较哈希值。
答案 1 :(得分:1)
您需要做的就是加密您输入的密码并比较两者;数据库中的哈希值和刚刚加密的哈希值。如果匹配则输入的密码是正确的。我假设您使用的是像SHA1这样的算法。
答案 2 :(得分:1)
在将用户发布的密码与数据库中的密码进行比较之前,请使用与存储密码相同的方式加密发布的密码。
答案 3 :(得分:1)
你不需要解密它。您无法将哈希转换回纯文本,它是单向函数。所以,基本上你对输入密码进行散列并比较两个散列:
E.g (pseudo code):-
if hash(password entered by user) == password stored in databse Then
//logged in successfully
else
//login failed
end if
答案 4 :(得分:1)
如前所述,您需要在每次重新输入密码时对密码进行哈希处理,并将哈希值与数据库中的哈希值进行比较。
您还应该考虑在哈希算法中使用salt。这个问题有很多讨论:
答案 5 :(得分:0)
我强烈建议使用md5()http://php.net/manual/en/function.md5.php。
当用户注册时,您存储:
$password = md5($_POST['password']);
当用户登录时,请检查:
if($_POST['password_entered'] == $passwordFromDB) :
// Log user in
else :
// Show error to user
endif;