Вы должны решить, как хранить пароли.Если вы сохраните их как строку в объекте Hibernate, они будут сохранены в varchar в базе данных в виде открытого текста.Любой, имеющий доступ к базе данных, сможет их увидеть.Аутентификация в этом случае состоит в сравнении отправленного пароля с паролем в базе данных.
Есть две другие возможности
Первая заключается в шифровании их с помощью секретного ключа перед сохранением их в базе данных.Но этот секретный ключ нужно будет где-то хранить, чтобы приложение расшифровывало их и сравнивало дешифрованный пароль с паролем, отправленным пользователем.Но это может, по крайней мере, уменьшить видимость пароля только для лиц, имеющих доступ к каталогу развертывания приложения.Аутентификация в этом случае заключается в расшифровке пароля, хранящегося в базе данных, с помощью секретного ключа и его сравнении с паролем, отправленным пользователем.Если они равны, то пользователь отправил правильный пароль.
Последняя возможность - использовать односторонний алгоритм хеширования (например, SHA-1), также известный как алгоритм дайджеста сообщений.Таким образом, нет необходимости в секретном ключе, и было бы очень трудно (читай: почти невозможно) получить доступ к паролю (если пароль соленый).Недостаток этого решения заключается в том, что если пользователь потеряет свой пароль, вы не сможете его отправить.Единственная возможность - сбросить его на новое значение, отправить этот новый пароль пользователю и попросить его выбрать новый.Аутентификация пользователя в этом случае заключается в хешировании пароля, который он отправляет, и сравнении с хешем, хранящимся в базе данных.
Для более подробных объяснений прочитайте http://en.wikipedia.org/wiki/Salt_(cryptography).