0

我在网上找到了一篇文章,其中包含以下代码,我想用它来了解更多 php/mysql ......

$username = 'Admin';
$password = 'gf45_gdf#4hg';

$salt = hash('sha256', uniqid(mt_rand(), true) . 'a random string will go here' . strtolower($username));

$hash = $salt . $password;

for ( $i = 0; $i < 100000; $i ++ ) {
     $hash = hash('sha256', $hash); }

$hash = $salt . $hash;

当用户想要登录时,我将如何验证 PHP 中的密码?

4

2 回答 2

1

您将运行完全相同的程序并查看结果是否匹配。

这是查看汇总密码是否存储匹配密码的一般过程。

  • 您创建一个函数来散列和存储已知密码,并且通常也会对其进行加盐
  • 您将其存储在数据库中
  • 当用户提交密码登录时,您通过完全相同的哈希和加盐算法运行它,并查看生成的哈希是否与存储在数据库中的哈希匹配

您还应该考虑使用 bcrypt:How do you use bcrypt for hashing passwords in PHP?

于 2013-04-18T00:11:28.480 回答
0

建议在 PHP 中编写一个类似模仿上述过程的函数。这样,当您尝试验证提交的凭据时,您将通过与构思期间相同的哈希过程运行密码,但生成随机盐除外。

于 2013-04-18T00:14:09.520 回答