Соль не может быть рандомной! Иначе вы не сможете данные проверить, сгенерировать такую же соль.
Привязываться к данным пользователя тоже плохая идея. Он сменит что-либо, соль уже будет другая - а пароль генерировался от прошлой соли. Снова не совпадет ничего.
Вообще почитайте что такое Соль. Она может быть рандомной в самом начале, придумывании. Но потом она остается константой и прячется глубоко в backend системе. Если стоит задача сменить соль - то вначале вы должны расшифровать данные с помощью старой соли - и зашифровать на новую. И подменить на новую константу.