據我所知,PHP的crypt()函數的工作原理是這樣:使用PHP的crypt()函數創建bcrypt散列時,是否需要鹽?
crypt($password,$salt);
而且,爲了創造一個bcrypt哈希(這被認爲是非常安全的)格式爲:
crypt("$2y$15$password",$salt);
其中$ 2Y指定使用bcrypt,15是回合的數量,它應該在10以上。
這是我的問題。運行:
crypt("$2y$15$password");
在我的理解,產生一個漂亮的大隨機鹽,並將其添加到哈希,以及比較密碼時,這是自動提取。這意味着我不必在我的桌子上放一個鹽場,或者獨立產生鹽。這是安全和正確的嗎?
例如,當我運行:
$test = "Hello";
echo crypt("$2y$15$test") . "\n";
我得到:
$6$R59d/nemygl0$/Gk6s57K2eFAkH4BWDGYhfdhbYGcqz.GRbD7qGDKOlhE5Lk.kgCoGQo/sDCCf1VDffdh7jtXPn/9rsexwrpFk1
前6個是指某種算法號,兩個$之間的下一個位是鹽,和那之後的那一點就是哈希。它是否正確?
此外,將這個散列與另一個散列進行驗證的語法是什麼? 謝謝。