2

新手来了 我正在尝试在他们创建帐户后使用 SHA-256 加密用户密码,然后当用户尝试登录时,它会尝试将他们的输入与 mysql 数据库中的任何加密密码相匹配。我想知道是否有人可以给我一个示例代码?

4

2 回答 2

6

散列是单向的,所以你不能真正“检索”你已经散列的内容。

当您在注册时保存密码时,请使用以下内容:

$hash=hash('sha256', $password);

并且只保存$hash在数据库中。当用户尝试登录时,对他尝试使用的密码进行哈希处理,并将其与数据库中的密码进行比较(对于相同的输入,哈希处理总是会给出相同的结果)。如果它们相同,则他可以登录(如果满足所有其他检查)。

如果您想让用户找回忘记的通行证,请参考这个较早的问题

此外,散列密码的最佳做法是使用某种salt,这超出了这个问题的范围,但请谷歌它。

于 2011-04-19T06:55:42.953 回答
0

如果使用 PHP >= 5.5,则password_hash()应用于存储密码和password_verify()检查。如果使用 PHP >= 5.3,你应该使用这个兼容性模块。如果使用较早版本的 PHP,则应升级。

不要滚动您自己的密码散列。没有足够的强调这一点。看一下开膛手约翰,了解仅使用加密哈希(旨在快速!)进行哈希处理的密码的破解速度有多快。

于 2014-08-15T16:34:27.070 回答