Хранение паролей пользователей в безопасности в 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));
}