在Java中保持用户密码安全吗?

时间:2011-06-19 15:07:34

标签: java security passwords hash

当我需要选择如何安全地将用户密码保存在数据库中并且能够在用户登录网站时检查它们是否匹配时,我已经到了这一点。

我现在正在使用 Spring 2.5 ,但是慢慢升级到 Spring 3 。你建议我保密密码是什么意思?我知道这个问题已经在这里和那里以类似的形式得到了回答,但我希望看到一些确切的,最新的答案,如何做到这一点,这也可以防止今天的密码黑客攻击技术。

用盐哈希密码的最合适方法是什么?我的意思是什么算法使用得更好,如果有的话?我应该使用bcryptjBCrypt是一个好的lib吗?有没有更好的方法来保护密码?使用Jasypt怎么样?您使用什么技术安全地存储用户密码?

编辑:即使我没有得到非常有趣和详细的答案,我选择了bcrypt / jBCrypt,因为这似乎是最好的选择。随意讨论。

4 个答案:

答案 0 :(得分:9)

是的,你应该使用bcrypt / jBCrypt。 bcrypt专门设计得很慢,因此破解密码需要花费不可及的时间。

有关在使用bcrypt进行密码散列时可以使用的额外措施,请参阅this blog post

答案 1 :(得分:1)

本文提供了一些关于使用salt散列密码的重要信息:https://www.owasp.org/index.php/Hashing_Java

答案 2 :(得分:1)

SpringSecurity使用散列和盐支持password encoding

答案 3 :(得分:-5)

你可以使用md5散列它 代码:

public static String StringHashing(String s) {

    MessageDigest m = null;
    try {
        m = MessageDigest.getInstance("MD5");

    } catch (NoSuchAlgorithmException ex) {

    }
    m.update(s.getBytes(), 0, s.length());
    return (new BigInteger(1, m.digest()).toString(16));

}