PHP の crypt() 関数が次のように機能することを理解しています。
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 は何らかのアルゴリズム番号を指し、2 つの $ の間の次のビットはソルトであり、その後のビットはハッシュです。これは正しいです?
また、検証のためにこのハッシュを別のハッシュと比較するための構文は何ですか? ありがとう。