Определение соли с помощью password_hash ()

я хеширую свой пароль с помощью bcrypt (на самом деле сpassword_compat так как я запускаю php 5.3.10)

Я хотел разделить строку результата функции на две части: используемую соль и сам хеш. (Я знаю, что для проверки пароля используется password_verify (). Но мне нужен хеш, чтобы использовать его в качестве ключа для шифрования закрытого ключа в более широкой системе безопасности.)

Для данного пароля (abcdef) это результат: I '

 $2y иult68Ti4/zEWX4VQ       ....           YCOWjL6

изменилсяфункция немного, чтобы выплюнуть concat, salt, hash и hash_format.

 ... from the password_compat ...
 $salt = substr($salt, 0, $required_salt_len);
 $hash = $hash_format . $salt;
 $ret = crypt($password, $hash);
 if (!is_string($ret) || strlen($ret) $ret, 
               'salt'=>$salt, 
               'format'=>$hash_format,
               'hash_format'=>$hash);

Я думал, что результат хэш был конкат$hash_format$salt$10$hash... но последний персонаж отличается ...

                                               _
[concat] =>        $2y$10$oWfFYcNqlcUeGwJM0AFUguSJ5t  .....  SvWG
[salt] =>                 oWfFYcNqlcUeGwJM0AFUgw
[hash_format] =>   $2y$10$oWfFYcNqlcUeGwJM0AFUgw
[format] =>        $2y$10$
                                               ^

Как видите, последний символ отличается в соли до функции crypt и после функции.

Как это возможно?

Ответы на вопрос(1)

Ваш ответ на вопрос