Laravelはbcrypt
を使用してパスワードをハッシュします。
この記事によると、プロセスのある時点で、Hash::make
関数は、パスワードを生成するソルトとして22長のランダム文字列を作成して使用します。
単一の異なるパスワードの場合、Hash::make
は一意のハッシュを返します。これは、プロセスのどこかで何らかのソルティングを使用していることを示唆しています。
しかし、これらのソルトは、ユーザーテーブルに格納されていません。 laravelは、パスワードの検証に使用する適切なハッシュをどのようにして知っていますか?
リンクした記事に回答が含まれているようです。 https://mnshankar.wordpress.com/2014/03/29/laravel-hash-make-explained/
これの賢さは、アルゴリズム、salt、およびコストがハッシュに埋め込まれているため、再構成/検証のために個々のコンポーネントに簡単に解析できることです(php cryptソースコードの関連セクションを https:/で参照してください) /github.com/php/php-src/blob/master/ext/standard/crypt.c#L258 )。このため、ソルト/コストをデータベーステーブルに個別に保存する必要はありません。