新手。我试图加密用户密码使用SHA-256后,他们已经使他们的帐户,然后当用户尝试登录,它会尝试匹配他们的输入与任何在mysql数据库中的加密密码。我想知道是否有人能给我一个示例代码?
散列是单向的,所以你不能真正'检索'你已经散列的内容。
当您在注册时保存密码时,使用如下内容:
$hash=hash('sha256', $password);
且仅在数据库中保存$hash
。当用户尝试登录时,对他尝试使用的密码进行散列,并将其与数据库中的密码进行比较(对于相同的输入,散列总是会给出相同的结果)。如果他们是相同的,他可以登录(如果所有附加检查都满足)。
如果你想让用户恢复他被遗忘的通行证,参考前面的问题。
此外,散列密码的最佳实践是使用某种salt
,这超出了这个问题的范围,但请谷歌它。
如果使用PHP>= 5.5,应该使用password_hash()
存储密码,使用password_verify()
进行检查。如果使用PHP>= 5.3,则应该使用此兼容性模块。如果你使用的是较早版本的PHP,你应该升级。
不要滚动自己的密码散列。再怎么强调也不为过。看看开膛手约翰(John the Ripper),看看只用加密散列(设计得很快!)进行散列的密码有多快就能被破解。