3 回答
TA贡献1886条经验 获得超2个赞
您应该以散列形式存储密码。这样您将无法对其进行逆向工程以获取原始密码。现在您可能会问为什么要使用单向哈希来存储密码?问题是,您不希望任何人对数据库中的数据进行逆向工程。即使有人可以访问您的数据库,他们仍然无法知道实际的密码。现在谈谈如果您自己无法获得原始密码,如何验证密码。
问题是,你不必这样做。您只需让用户输入他的密码,然后对输入的密码进行散列(并且由于相同数据的散列将始终生成相同的散列)您可以轻松验证用户输入的密码和您散列的密码是否与已散列的相匹配并存储密码。
更简单的方法是,您必须在注册时获取密码p
并将其作为散列密码存储在数据库中hashed_p
。现在,当您想要登录或验证密码时,您再次要求用户输入密码。现在您将对p
用户输入的密码进行哈希处理并生成哈希密码hashed_p
。然后您将将此 hashed_p 与hashed_p
数据库中的散列密码进行比较。
因此,要验证您必须检查用户输入的密码的哈希值是否等于数据库中存储的密码的哈希值。这就是密码散列的工作原理。
TA贡献1794条经验 获得超7个赞
我们今天存储和验证用户密码的默认且最安全的方法是“加盐慢哈希”。(简单的哈希可能不够好)
以从 SH256 生成的十六进制表示形式加密到数据库。
假设您的意思是使用 SHA-256 对密码进行哈希处理。正如已经评论过的,加密和散列之间存在差异,在这个领域你需要清楚
我对如何确定用户是否拥有正确的密码感到困惑
选择与用户密码的哈希值一起存储的盐
使用盐对用户提供的密码(登录时提供)进行哈希处理
从数据库中选择用户名和密码哈希匹配的用户记录
添加回答
举报