安全地存储用户名和密码

时间:2018-08-10 14:32:32

标签: java security

我目前正在创建自己的Web应用程序,并且正在实现登录功能。我已经读到,使用“ Google登录”功能是一个不错的选择,因此我已经将其包括在内。

我还想存储用户名和密码(只是为了了解哈希并从中获得一些经验)。我想知道 SHA256 使用强盐是否仍然安全,还是应该研究更新的算法?

我发现了类似的问题here,但已有6年历史了,因此认为更新的答案可能会更有帮助。

3 个答案:

答案 0 :(得分:4)

可能您根本不需要考虑实现自己的身份验证。相反,您应该使用提供可靠且经过良好测试的身份验证的框架。任何认真的Web框架都将在这里提供至少一个不错的选择,因此它不会以任何方式妨碍您选择技术,并且一定会使您的工作更加轻松和安全。

话虽如此,对标准消息来源的审查表明,如果您打算实施自己的身份验证,则SHA-512和SHA-3是最受青睐的候选者。同样,我不建议这样做。

答案 1 :(得分:1)

据我所知SHA256尚未损坏,计算时间仍然足够。 如果您使用足够大的盐,那应该是安全的。

仅当您不使用alt时,您才容易遭受彩虹表和字典攻击。

还请确保对密码设置最低要求,以防止暴力攻击。

查看此帖子;-)

https://crypto.stackexchange.com/questions/52571/computational-requirements-for-breaking-sha-256

希望这会有所帮助。

最诚挚的问候

答案 2 :(得分:0)

对于那些自成一体的公司:有一些细节需要研究。

不存储密码,而是存储密码的数字指纹。这样可以防止在违反数据库的情况下窃取密码。或者,某些数据库知道数据库检查的密码字段。检查一下自己数据库是否使用足够强的密码。

为防止病毒监听JVM内存,请不要使用PreparedStatement.setString,但请参阅here以获取一些安全措施。

(对于以相同前缀开头的密码,某些散列会遭受(具有相同长度的散列,因此解密速度会更快。在这种情况下,将使用随机种子。)