Соль не является секретным параметром.
Единственная её задача - исключить вариант использования радужных таблиц. Для этого соль должна быть сложно угадываемой.
Потому данные пользователя - так себе соль. Лучше не морочиться и сгенерировать случайную строку вменяемой длинны. Хранить вместе с хэшом.
Для каждого пароля - своя отдельная соль.
Все это уже реализовано в том же алгоритме хэширования паролей
Bcrypt.
Подробный ответ на вопрос о хэшировании паролей давался уже в этом вопросе:
Как лучше всего шифровать пароли для сохранения в БД?
Вопрос соли там разобран тоже.