下面是從PHP manual page for crypt()的例子:(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!";
}
什麼我不理解?
你應該使用更先進的技術,如md5,sha1等 – dusoft 2010-02-10 09:40:35
呵呵。哈。哈。 HAHAH。如果只有你和我一起在這個史詩般的旅程中,我的朋友。 http://stackoverflow.com/questions/2235158/php-sha1-vs-md5-vs-sha256-which-to-use-for-a-php-login – sepiroth 2010-02-10 09:43:23