0

我正在查询我的数据库以获取密码。但我得到了密码哈希。有没有办法将它转换为字符串。

SELECT passwordhash FROM userTable WHERE userID = 21600

我没有任何带密码的字段。

请告诉我。

谢谢。

4

3 回答 3

7

如果有办法,那将意味着正在使用损坏的散列算法。换句话说,不,没有办法从哈希返回到原始密码。

关键是使用相同的算法从输入的密码生成哈希,并将其与数据库中的哈希进行比较。这样,您可以通过将密码存储在数据库中来进行身份验证,而不会影响密码安全性。

于 2013-01-18T13:32:03.750 回答
5

我正在查询我的数据库以获取密码。

那么要么你会失败,要么你的系统不安全。您不应该以可逆的形式存储密码。

但我得到了密码哈希。

好的!这表明该系统是安全设计的。

存储密码哈希的全部目的是避免以任何可以反转的形式存储密码本身。

如果有人入侵了您的系统并获取了您的所有私钥,我不希望他们能够找到我的密码。如果他们只有散列 - 如果散列算法已被适当地选择 - 那么他们应该无法在合理的时间内从散列中恢复到原始密码。

同样,它也会阻止信任您系统的任何人知道密码。请记住,人们(不幸地)重复使用密码。由于密码存储不安全,X 公司不希望 Y 公司的某个用户作为其用户之一登录。(不幸的是,有太多地方确实存储甚至通过电子邮件发送明文密码 - 但不应该这样做。)

从根本上说,你应该退后一步——想想你为什么要尝试获取密码,以及你可以采取哪些不需要密码的替代方法。更改系统以获取用户的明文密码不应被视为可行的选择。

于 2013-01-18T13:33:28.533 回答
1

如果它真的是一个哈希,那么算法是单向的,你无法取回原始密码,除非使用彩虹表或一些蛮力工具。

于 2013-01-18T13:33:53.690 回答