ドキュメントには、発生している現象が説明されています。2 番目の引数のドキュメントには次のように記載されています。
ハッシュのベースとなるオプションのソルト文字列。指定しない場合、動作はアルゴリズムの実装によって定義され、予期しない結果につながる可能性があります。
以下を実行すると、10 個の異なる値が得られる可能性があります。
<?php
$string = "password";
for ($i = 0; $i < 10; $i++) {
echo crypt($string) . "\n";
}
私は以下を取得します:
$1$sWCzgR2e$vjR1CagStx0QbRYy/VbWm.
$1$C5TexeGI$ifWZ3mhGKthQ.ZW1UEswl/
$1$miA.EAYy$A6amxA.B4HvebndP/2ydx1
$1$izL6b3lz$hKncuA4oGv.8DAlAcybm..
$1$EqPefzSc$1XvQFf7pqFeuFz68lA1tv0
$1$njFWwWUo$NeQxtRHyUUzivVhidQSt5/
$1$LH3CVBV1$IIPPuHPUNL04ODtuRw0WR0
$1$/K75BwgK$MhSmhXtXF9Gn6ujx3YgE30
$1$OfddZpSQ$4u.dgsAWe4M/bOerUYTxr0
$1$G6JPvJpQ$aGvHluWRSy659MUe9P/aN.
呼び出しの 2 番目の引数としてデータベース ソルトを使用することをお勧めしますcrypt($password, $salt)。