为安全起见,在java中密码的哈希值是多少?

muk*_*und 6 java passwords hash

我正在用Java开发一个Web应用程序,我想
通过使用散列密码来确保身份验证过程的安全.

在散列
步骤1中:我们获取用户给出的密码并添加.
步骤2:使用MessageDigest哈希值并将哈希值存储在数据库中

而验证在登录过程用户我们重复两个相同以上步骤,但代替
存储我们与存在于数据库中的值进行比较的哈希值.

现在请原谅我的无知,但我想说的是,如果黑客通过任何其他
方式访问数据库,那么它可以提供安全性,因为黑客无法
轻易地从散列值中获取密码的真实文本.

但是,Bruteforce attack, Rainbow attack, dictionary attack当我们使用相同的步骤来验证用户登录时,它如何提供针对其他形式的攻击的安全性?

我不认为现在密码的哈希值太多了.
给我一些建议.....如果我错了.

JB *_*zet 4

蛮力就是蛮力。除了在连续 N 次失败的尝试后拒绝尝试身份验证(或施加延迟)之外,您无能为力。当然,如果黑客拥有散列密码,他将能够暴力破解密码,但安全散列函数的要点是使其变得非常非常长。

彩虹/字典攻击通过加盐解决。如果用户选择“password”作为密码,彩虹/字典攻击将立即找到密码。但由于您使用随机值对密码加盐,因此散列值将类似于d7("58gd0}78sq5sQIazuAKpassword,它不会出现在彩虹表/字典中。