Как сохранить пароли пользователей в Java? - PullRequest
6 голосов
/ 19 июня 2011

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

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

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

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

Ответы [ 4 ]

9 голосов
/ 19 июня 2011

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

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

1 голос
/ 19 июня 2011

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

1 голос
/ 19 июня 2011

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

0 голосов
/ 19 июня 2011

Вы можете хэшировать его, используя код 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));

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...