我正在查询我的数据库以获取密码。但是我得到了密码。有没有办法将其转换为字符串。
SELECT passwordhash FROM userTable WHERE userID = 21600
我没有密码的任何字段。
请告诉我。
感谢。
答案 0 :(得分:7)
如果有办法,那就意味着正在使用破碎的哈希算法。换句话说,不,没有办法从哈希回到原始密码。
重点是使用相同的算法从输入的密码生成哈希值,并将其与数据库中的哈希值进行比较。这样,您可以通过将密码安全性存储在数据库中来进行身份验证,而不会影响密码安全性。
答案 1 :(得分:5)
我正在查询我的数据库以获取密码。
然后 你将失败或你的系统是不安全的。您不应该以可逆的形式存储密码。
但我收到了密码。
好!这表明系统设计安全。
存储密码哈希的整个点是为了避免将密码本身存储在任何形式中,可以反转。
如果有人攻击您的系统并获取所有私钥,我不希望他们能够找到我的密码。如果他们只有哈希 - 并且如果已经适当地选择了哈希算法 - 那么他们就不能在合理的时间内从哈希中恢复原始密码。
同样,它也会阻止任何信任在你的系统中的人知道密码。请记住,人们(不幸的是)重用密码。由于密码存储不安全,X公司不希望某公司Y作为其用户之一登录。 (不幸的是,有很多地方做存储甚至通过电子邮件发送明文密码 - 但是应该不鼓励它。)
从根本上说,你应该退后一步 - 想想为什么你想要获取密码,以及你可以采取哪种不需要的替代方法。更改系统以便您获取用户的明文密码不应被视为可行选项。
答案 2 :(得分:1)
如果它确实是一个哈希值,那么算法只是单向的,除了使用rainbow tables或一些强力工具外,你无法获得原始密码。