Как использовать SpringPasswordEncode? - PullRequest
1 голос
/ 15 октября 2011
StandardPasswordEncoder encoder = new StandardPasswordEncoder("secret");
String result = encoder.encode("myPassword");
assertTrue(encoder.matches("myPassword", result));

Это все ясно, но в базе данных я просто храню одно поле пароля VARCHAR, в котором хранится хешированное значение, объединенное солью? Это так просто?

1 Ответ

1 голос
/ 17 октября 2011

В базе данных вы должны хранить возвращаемое значение endocer.encode.

просто сохранить одно поле пароля VARCHAR, в котором хранится хэшированное значение, объединенное солью?

Это неправильно (или может только не правильно написано), верно:

  • На первом шаге Соль добавляется к паролю,
  • На втором шаге вычисляется хеш (из соленого пароля)

hash(password+salt)

Но НЕ наоборот hash(password)+salt!


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

Люди подразумевают, что вы не должны хранить пароль таким, какой он есть (простой), но, конечно, вы можете хранить хэш в текстовом представлении. - Проблема, о которой говорят люди, заключается в том, что если у кого-то есть доступ к базе данных, он не должен читать пароли для их использования. Если вы считаете, что хранение паролей в виде хэша (например, md5) недостаточно безопасно из-за хорошо известных таблиц md5 - открытого текста, тогда нужно добавить соль раньше и надеяться, что пароль + соль в этих таблицах отсутствует.

...