web-dev-qa-db-ja.com

PASSWORD_DEFAULTとPASSWORD_BCRYPT

PASSWORD_DEFAULTとPASSWORD_BCRYPTの違いは何ですか?どちらもBlowfish暗号化アルゴリズムを使用していますか?アルゴリズムのコストはいくらですか? PHPでpassword_hashを設定する方法は、60ではなく255ハッシュ長を生成しますか?

18
rexhin

現在サポートされているアルゴリズムはCRYPT_BLWFISHを使用したPASSWORD_BCRYPTのみなので、現在PASSWORD_DEFAULTPASSWORD_BCRYPTの間に違いはありません。 PASSWORD_DEFAULTの目的は、将来追加のアルゴリズムを含めることができるようにすることです。その場合、PASSWORD_DEFAULTは常に、サポートされている最も強力なハッシュアルゴリズムを適用するために使用されます。

コストは、実行されるアルゴリズムの反復回数に関連し、計算の速度と生成されるハッシュ値に影響します。コストが高いほど実行に時間がかかり、ブルートフォース攻撃が遅くなる

22
Mark Baker

ドキュメンテーションによると、PASSWORD_DEFAULTは将来の証明になることを意図しています

ドキュメントから:

PASSWORD_DEFAULT-bcryptアルゴリズムを使用します(PHP 5.5.0以降のデフォルト)。この定数は、新しい強力なアルゴリズムがPHPに追加されると、時間の経過とともに変化するように設計されています。そのため、この識別子を使用した結果の長さは時間とともに変化する可能性があるため、60文字を超えて拡張できるデータベース列に結果を格納することをお勧めします(255文字が適切な選択です)。

3
Victory

別の良い例をここに示します: https://wwphp-fb.github.io/faq/security/passwords/

現在PASSWORD_DEFAULTPASSWORD_BCRYPTであり、言語と暗号技術の進歩に伴い、サポートされているさまざまなタイプのアルゴリズムがあります。 PASSWORD_DEFAULTは、その新しいタイプのアルゴリズム(Argon2など)に置き換えられます。常にPASSWORD_DEFAULTを使用することをお勧めします。

1
Blueblazer172

現時点では、PASSWORD_DEFAULTとPASSWORD_BCRYPTの間に違いはありません( http://www.php.net/manual/en/password.constants.php )。コストは、ハッシュが適用されるラウンドの数によって異なります。上記のリンクでも説明されています。ハッシュのセキュリティを高めたい場合は、長さではなく、ラウンド数を増やすことをお勧めします。

1
iceduck