Você pode me ajudar a entender a função de hash de sal?

Estou passando por várias técnicas de hash de senha e encontrei um tutorial que me deixou um pouco duvidoso sobre alguns pontos. Em particular, eu gostaria que você pudesse reconfirmar / explicar algumas coisas. Por exemplo, encontrei a seguinte função. Agora, se eu entendo bem o que isso está fazendo, está gerando um sal que, com os seguintes valores:

$salt = sprintf("$2a$%02d$", $cost) . $salt; // if $cost = 10 and $salt 234, then it should output $2a$1002d$234? 

Em segundo lugar, o exemplo de autenticação usa a seguinte comparação:

if ( crypt($password, $user->hash) === $user->hash )

e afirma que "Hashing da senha com seu hash, pois o sal retorna o mesmo hash" - agora verifiquei a documentação do php e, naturalmente, afirma o mesmo, mas estou apenas tentando entender o conceito teoricamente (não gosto de reutilizar coisas mesmo que eu saiba usar se não entender a lógica por trás disso).

Minha pergunta é por que crypt ($ password, $ hash) está retornando o mesmo valor de $ hash. Eu só quero entender a lógica por trás disso. Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion