PASSWORD_DEFAULTとPASSWORD_BCRYPTの違いは何ですか?どちらもBlowfish暗号化アルゴリズムを使用していますか?アルゴリズムのコストはいくらですか? PHPでpassword_hashを設定する方法は、60ではなく255ハッシュ長を生成しますか?
現在サポートされているアルゴリズムはCRYPT_BLWFISHを使用したPASSWORD_BCRYPT
のみなので、現在PASSWORD_DEFAULT
とPASSWORD_BCRYPT
の間に違いはありません。 PASSWORD_DEFAULT
の目的は、将来追加のアルゴリズムを含めることができるようにすることです。その場合、PASSWORD_DEFAULT
は常に、サポートされている最も強力なハッシュアルゴリズムを適用するために使用されます。
コストは、実行されるアルゴリズムの反復回数に関連し、計算の速度と生成されるハッシュ値に影響します。コストが高いほど実行に時間がかかり、ブルートフォース攻撃が遅くなる
ドキュメンテーションによると、PASSWORD_DEFAULTは将来の証明になることを意図しています
ドキュメントから:
PASSWORD_DEFAULT-bcryptアルゴリズムを使用します(PHP 5.5.0以降のデフォルト)。この定数は、新しい強力なアルゴリズムがPHPに追加されると、時間の経過とともに変化するように設計されています。そのため、この識別子を使用した結果の長さは時間とともに変化する可能性があるため、60文字を超えて拡張できるデータベース列に結果を格納することをお勧めします(255文字が適切な選択です)。
別の良い例をここに示します: https://wwphp-fb.github.io/faq/security/passwords/
現在PASSWORD_DEFAULT
はPASSWORD_BCRYPT
であり、言語と暗号技術の進歩に伴い、サポートされているさまざまなタイプのアルゴリズムがあります。 PASSWORD_DEFAULT
は、その新しいタイプのアルゴリズム(Argon2など)に置き換えられます。常にPASSWORD_DEFAULT
を使用することをお勧めします。
現時点では、PASSWORD_DEFAULTとPASSWORD_BCRYPTの間に違いはありません( http://www.php.net/manual/en/password.constants.php )。コストは、ハッシュが適用されるラウンドの数によって異なります。上記のリンクでも説明されています。ハッシュのセキュリティを高めたい場合は、長さではなく、ラウンド数を増やすことをお勧めします。