Ответ 1
Причина в том, что работает склеп. Он сконструирован так, что вы можете сделать следующее
if ($hashedPassword == crypt($rawPassword, $hashedPassword)) {
//Verified
}
Итак, сохраняя все, вам не нужно каждый раз воссоздавать сольную строку...
И точка соли не должна быть секретной. На самом деле это не значит быть тайным. Это означало фольклорные столы. помните, что если они могут захватить вашу базу данных, шансы высоки, они могут получить и другие вещи, поэтому размещение соли в другом месте на самом деле не даст вам многого.
Кроме того, соль не поможет. BCrypt предназначен для CPU-Hard, что означает, что грубое форсирование (даже зная соль) нецелесообразно. Вот почему у вас есть параметр стоимости. Поэтому не беспокойтесь о "сокрытии" соли. Просто сохраните его рядом с паролем, и все будет хорошо...
Не говоря уже о том, что произойдет, если в будущем вы захотите настроить свой алгоритм? Например, допустим, вы хотите увеличить параметр стоимости из-за лучшего оборудования, которое будет установлено. Если вы не сохранили эту информацию с паролем, все ваши сохраненные пароли станут недействительными. Таким образом, каждый сохраненный пароль имеет всю информацию, необходимую для его проверки. Таким образом, вы можете проверить действующий логин, если хеш является текущим значением по умолчанию, а если не перефразировать и обновить базу данных новым. Он предотвращает проблемы, связанные с обновлением и улучшением методов хеширования...