Я пытаюсь определить лучший способ реализовать проверку пароля в Java.Пароль хранится в виде текста в базе данных SQL.
Должен ли я:
- Запросить пароль на основе имени пользователя и проверить его в приложении Java?(ВЫБЕРИТЕ пароль ОТ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ username = 'foo')
- Запрос строки на основе имени пользователя + ввода пароля?(ВЫБЕРИТЕ истину от пользователей, ГДЕ username = 'foo' и password = 'bar')
- Что-то еще полностью ...
Если ответ # 1, как правильно получить хэш пароля в Java?Я знаю, что пароли должны храниться как char [] вместо String, чтобы не оставлять копию в памяти, но можно ли извлечь ее из результирующего набора, используя ResultSet.getString ("password")?Разве это не создаст строковую константу и не станет угрозой безопасности (даже если хешируется)?Другой вариант, который я вижу, состоит в том, чтобы сохранить / преобразовать пароль в массив в SQL, а затем использовать ResultSet.getArray () для его извлечения, но это кажется немного чрезмерным, если не является абсолютно необходимым.
Редактировать:
Хорошо, возможно, я допустил ошибку, используя слово TEXT в том же сообщении, что и ПАРОЛЬ, но я имел в виду тип данных, но не говорил, что я сохраняю пароли в обычном виде.текст.На самом деле я четко спросил: «Как правильно получить пароль hash в Java».Пожалуйста, придерживайтесь вопроса, который я задал, если вы хотите помочь.