crypt()の PHP マニュアル ページの例を次に示します。
<?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
ます。明らかに、それをDBに保存する必要があります。しかし、次の行では、ソルトと私が比較しているものの両方として使用されています。この後者の場合、理想的には正しいパスワード as を持っているが、比較されてソルト化されている場合、どうすればと等しくcrypt($user_input, $password)
なる可能性があるのか わかりませんに。最後の行が$password
$user_input
$password
$password
if (crypt($user_input) == $password) {
echo "Password verified!";
}
私は何を理解していませんか?