Вот пример со страницы руководства PHP для crypt () :
<?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!";
}
?>
Почему это работает? Я так понимаю 'mypassword'
- это пароль, который я хочу использовать для фактического администратора. Поэтому я сначала склеил это и установил его равным $password
. Очевидно, что я должен хранить это в БД. Но в следующих строках он используется как соль и то, с чем я сравниваю, и я не понимаю, как crypt($user_input, $password)
может быть равно $password
, если в этом последнем случае у меня в идеале правильный пароль как $user_input
, но с добавлением $password
по сравнению с $password
. Для меня было бы больше смысла, если бы последняя строка была
if (crypt($user_input) == $password) {
echo "Password verified!";
}
Что я не понимаю?