当使用PHP的sha256哈希方法时,如何将用户输入与db密码进行比较?

当使用PHP的sha256哈希方法时,如何将用户输入与db密码进行比较?,php,hash,sha256,Php,Hash,Sha256,假设我设置了一个新用户密码,如下所示: $salt = random_string(40) // some method that spits out a random // 40 alpha-numeric character string $password = hash('sha256', $_POST['password'] . $salt); 然后,当用户想要登录时,我如何将用户输入的内容与其哈希db密码进行比较?存储了salt后

假设我设置了一个新用户密码,如下所示:

$salt = random_string(40) // some method that spits out a random
                          // 40 alpha-numeric character string

$password = hash('sha256', $_POST['password'] . $salt);

然后,当用户想要登录时,我如何将用户输入的内容与其哈希db密码进行比较?

存储了salt后,您对用户发布的内容应用相同的算法,并将结果与存储的密码进行比较。

存储了salt,您对用户发布的内容应用相同的算法,并将结果与存储的密码进行比较。

在登录时

使用帐户名或电子邮件地址获取注册时存储在数据库中的密码哈希和salt 用相同的方法和相同的盐散列提供的密码 将得到的哈希值与存储的哈希值进行比较。如果它们相同,则密码匹配。 这里的关键是存储盐。

在登录时

使用帐户名或电子邮件地址获取注册时存储在数据库中的密码哈希和salt 用相同的方法和相同的盐散列提供的密码 将得到的哈希值与存储的哈希值进行比较。如果它们相同,则密码匹配。
这里的关键是储存食盐。

但是储存食盐会不会违背它的目的?食盐只会使检查两个人是否拥有相同的密码变得更困难。如果您想在数据库被占用时更好地抵御暴力攻击,我建议您使用bcrypt等速度较慢的工具来延长暴力攻击的时间。对于一个拥有数千用户的站点来说,blowfish加密会不会过火?嗯,phpass使用非常简单、轻量级,安全总比抱歉好,尤其是w.r.t用户密码。它甚至可以自动处理盐渍部分。盐渍的目的是阻止彩虹桌攻击,存储它不是问题,因为攻击者无法用你的盐渍重新创建彩虹桌,如果他们的桌上有盐渍,那么所有的数据都已经被泄露了。但是存储salt会不会违背它的目的呢?salt只会让检查两个人是否拥有相同的密码变得更加困难。如果您想在数据库被占用时更好地抵御暴力攻击,我建议您使用bcrypt等速度较慢的工具来延长暴力攻击的时间。对于一个拥有数千用户的站点来说,blowfish加密会不会过火?嗯,phpass使用非常简单、轻量级,安全总比抱歉好,尤其是w.r.t用户密码。它甚至会自动处理盐渍部分。盐渍的目的是阻止彩虹表攻击,存储它不是问题,因为攻击者无法用你的盐渍重新创建彩虹表,如果他们的表中有盐渍,那么所有数据都已经被破坏了。再做同样的事情吗?如果您知道如何计算密码的哈希值,请接受用户输入并重新计算哈希值,然后与存储在某个数据库中的哈希值进行比较。是否再次执行相同的操作?如果您知道如何计算密码的哈希值,请接受用户输入并重新计算哈希值,然后与存储在某个数据库中的哈希值进行比较。