Хранение паролей пользователей в безопасности в Java?

Я пришел к точке, когда мне нужно выбрать способ, как безопасно хранить пароли пользователей в базе данных и иметь возможность проверить, соответствуют ли они, когда пользователь входит в систему на веб-сайте.

Я использую Весна 2.5 на данный момент, но медленно обновления до Весна 3. Что вы посоветуете мне, чтобы сохранить пароли в безопасности? Я знаю, что на этот вопрос были даны ответы в аналогичных формах здесь и там, но я хотел бы увидеть некоторые точные, вверх-к-дата ответ о том, как это сделать, что также может защитить от современных методов взлома пароля.

каким будет наиболее подходящий способ хэширования паролей с помощью соли? Я имею в виду, какой алгоритм лучше использовать, если он вообще есть? Должен ли я использовать bcrypt, а это jBCrypt хороший lib для этого? Есть ли лучший способ защитить пароли? Как насчет использования Jasypt? Какие методы вы используете для безопасного хранения паролей пользователей?

Edit: хотя я не получилось очень интересно и detailish ответы я пошел с bcrypt / jBCrypt, поскольку это кажется лучшим выбором. Не стесняйтесь обсуждать.

4 ответов


Да, вы должны использовать bcrypt / jBCrypt. bcrypt специально разработан, чтобы быть медленным, так что это займет неосуществимое количество времени, чтобы взломать пароль.

посмотреть этот блог о дополнительных мерах, которые вы можете использовать поверх использования bcrypt для хэширования паролей.


в этой статье есть отличная информация о хешировании пароля с солью:https://www.owasp.org/index.php/Hashing_Java


SpringSecurity поддерживает кодировка пароль используя хэширование и соли.


вы можете хэшировать его с помощью 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));

}