4
我很確定crypt()PHP函數真的很困惑。
當第二個密碼明顯使用不同的第二個參數時,以下兩個密碼函數如何給出相同的輸出? Diff salt意味着diff散列正確嗎?
echo crypt("password", '$2y$09$anexamplestringforsalt$')."\n<br>";
echo crypt("password", crypt("password", '$2y$09$anexamplestringforsalt$'))."\n<br>";
輸出:
$2y$09$anexamplestringforsale/.K.VdgECUVEd9N4ja3u1WtgPi5BXZq
感謝您的信息,最大。投票。 –
欣賞它!這有助於。所以基本上,crypt函數分解了$ hash字符串,並將子字符串(salt部分)用於實際的鹽? – user3388884
正確。它實際上使用了除散列部分之外的所有部分。如果使用我鏈接的簡化密碼哈希API,'password_verify()'也會使用哈希部分來驗證哈希值。簡而言之,如果您直接生成鹽或直接使用隱藏,則可能會出現錯誤。 [如何在PHP中使用bcrypt密碼](http://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php/17073604#17073604) – ircmaxell