Я не понимаю документацию на php.net . Похоже, что они используют зашифрованную версию пароля в качестве соли при тестировании на оригинальное шифрование.
Когда я вставляю крипту без дополнительного второго параметра (соли), я получаю разные зашифрованные версии одного и того же пароля. Это ожидаемое поведение?
Однако, если я вставлю второй параметр 'd4', я получу те же зашифрованные пароли для ввода того же пароля. Ожидаемое поведение.
До вставки при регистрации:
$pass = crypt('$pass', 'd4'); // after this I insert $pass into the mysql table
Тестирование при входе:
$pass = crypt($pass, 'd4'); // after this I test $pass against the mysql table
Документация по PHP.net:
<?php
$password = crypt('mypassword'); // let the salt be automatically generated
/* You should pass the entire results of crypt() as the salt for comparing a
password, to avoid problems when different hashing algorithms are used. (As
it says above, standard DES-based password hashing uses a 2-character salt,
but MD5-based hashing uses 12.) */
if (crypt($user_input, $password) == $password) {
echo "Password verified!";
}
?>
Как это работает?