在JDBC中将passwordhash转换为密码

时间:2013-01-18 13:30:15

标签: java jdbc

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

SELECT passwordhash FROM userTable WHERE userID = 21600

我没有密码的任何字段。

请告诉我。

感谢。

3 个答案:

答案 0 :(得分:7)

如果有办法,那就意味着正在使用破碎的哈希算法。换句话说,不,没有办法从哈希回到原始密码。

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

答案 1 :(得分:5)

  

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

然后 你将失败你的系统是不安全的。您不应该以可逆的形式存储密码。

  

但我收到了密码。

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

存储密码哈希的整个是为了避免将密码本身存储在任何形式中,可以反转。

如果有人攻击您的系统并获取所有私钥,我不希望他们能够找到我的密码。如果他们只有哈希 - 并且如果已经适当地选择了哈希算法 - 那么他们就不能在合理的时间内从哈希中恢复原始密码。

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

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

答案 2 :(得分:1)

如果它确实是一个哈希值,那么算法只是单向的,除了使用rainbow tables或一些强力工具外,你无法获得原始密码。