Определение соли с помощью 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 и после функции.
Как это возможно?