PHP のドキュメントによると、bcrypt ソルトは
「$2a$」、2 桁のコスト パラメータ、「$」、およびアルファベット 22 桁の「./0-9A-Za-z」
したがって、crypt() 関数を使用してパスワードをハッシュすると、結果の出力にはソルトの一部として最初の 7 文字 (コスト パラメーターが 10 の場合は $2a$10$) が含まれます。インターネット全体で見つけることができた場合、この完全な出力が db に書き込まれます。
これらの最初の文字を残りのソルトと暗号化されたデータと共に保存することに何の意味があるのか 疑問に思っています。それらの意味は私には完全に明らかですが、なぜそのような情報が残りのハッシュと一緒に書かれなければならないのか本当に理解できません. それらは、アルゴリズムと計算の適応コストに関する「単なる」情報ではありませんか? では、このようなアプリケーション関連の情報を保存する利点は何でしょうか? そして (幼稚に聞こえるかもしれませんが) なぜ最終的に私のデータベースを盗む攻撃者にそれらを開示するのでしょうか?