Я использую PHPass для хэширования своих паролей в течение длительного времени. Я признаю, что все еще есть вещи, которые я не совсем понимаю (или игнорирую), чтобы правильно хешировать пароль, поэтому сегодня я просматривал всю информацию, которую я мог найти об этом.
Пересматривая документы PHPass, я сделал следующее:
Помимо фактического хэширования, phpass прозрачно генерирует случайные соли, когда новый пароль или кодовая фраза хэшируется, и он кодирует хэш-тип, соль и счетчик растяжения пароля в строку «хэш-кодировку», которую он возвращает. Когда phpass аутентифицирует пароль или кодовую фразу против сохраненного хеша, он также прозрачно извлекает и использует идентификатор хеш-типа, соль и счетчик итераций из «строки кодирования хэша». Таким образом, вам не нужно беспокоиться о соле и растягивании самостоятельно – phpass заботится о них для вас.
  Я смело вынесла предложение, которое беспокоило меня. 
  Я всегда, хотя соль должна быть несколько секретной, в том смысле, что она не должна быть известна злоумышленнику.  Поэтому, если правильно понимать, PHPass сохраняет соль, используемую в том же хэше, чтобы она могла использовать ее при сравнении паролей и проверки правильности. 
  Мои вопросы: 
Цель соли – не секрет. Цель состоит в том, чтобы добавить уникальный компонент к каждому входу хэширования, поэтому идентичные пароли не будут хешировать к идентичным хэшам, тем самым делая процесс грубой силы более сложным и трудоемким, поскольку каждый хэш должен быть проверен индивидуально.
Да, было бы немного более безопасно, если бы соль была секретной, но на практике это трудно реализовать, так как ваша заявка также нуждается в соли, поэтому ее нужно хранить где-нибудь там, где доступен пароль. Поэтому на практике, когда злоумышленник получает хэш пароля, он, как правило, также может получить соль в любом случае.
  Немного фона 
  Соль не должна быть секретной, вместо этого соль «работает», убедившись, что хэш-результат уникален для каждого использованного экземпляра.  Это делается путем выбора другого значения случайной соли для каждого вычисленного хэша. 
Намерение соли не скомпрометировано, когда оно известно; злоумышленнику все равно необходимо атаковать каждый хэш отдельно. Поэтому вы можете просто сохранить соль вместе с паролем.
  Итак, безопасен ли PHPass? 
  ДА!  PHPass (в соответствии с лучшими практиками) генерирует для вас сильную случайную соль.  Это хорошо изученная и качественная библиотека. 
  Интересные ссылки : 
  Как безопасно использовать хэш-пароли? 
  Как хранить соль? 
  Пароль Хейшинг добавляет соль + перец или достаточно соли? 
  Солярное поколение и программное обеспечение с открытым исходным кодом 
Если я правильно понимаю, соли в первую очередь используются, чтобы помешать заранее вычисленным атакам хэшей / радужных таблиц. Пока хеш, который используется, генерируется так, что он достаточно глобально уникален (не жестко закодирован в PHPass, например), вы в порядке.