Да, соль должна храниться в секрете, но также и хеш пароля.Для них вполне приемлемо хранить одинаково секретно в одном и том же месте.Чтобы проверить пароль по хешу, вам нужно объединить соль с паролем, а затем проверить его по хешу.Таким образом, любой пользователь или процесс, имеющий право на просмотр хэша пароля, также должен иметь право видеть соль, поскольку хэш пароля сам по себе бесполезен для проверки паролей (если только вы не собираетесь перебирать соль).
Цель соли в том, чтобы, если два разных пользователя имели один и тот же пароль, они хэшировали разные вещи.Это также означает, что атаки по словарю намного сложнее, потому что вы не можете просто хэшировать все вероятные пароли, а затем проверять их по списку хэшей паролей пользователей, чтобы найти пароли нескольких пользователей.Вместо этого вам нужно попробовать пароли для отдельной соли, чтобы найти пароль одного пользователя, или попробовать все комбинации вероятных паролей с несколькими солями, чтобы найти совпадения.Но знание соли само по себе не означает, что вы можете изменить хеш пароля.Это просто означает, что вы можете провести словарную атаку на хеш пароля.
Если вы можете найти способ сделать соль более безопасной, чем значение хеша, это, конечно, не будет плохой вещью, ноТрудно понять, как это возможно, когда любая программа, которой нужен доступ, нуждается в доступе к обоим.