10

PHP 5.5 の新しいpassword_hash関数に関するドキュメントを読んで、デフォルトのアルゴリズムは何なのか疑問に思っています。

password_hash("rasmuslerdorf", PASSWORD_DEFAULT);

それに関するドキュメントはこれを明確にしません: http://www.php.net/manual/en/password.constants.php

4

3 に答える 3

9

これはpassword_hash()のドキュメントで更新されており、定数ページで間もなく更新されます (ドキュメントの変更を約 1 時間前にコミットしたばかりです)。

これは本日、password.constantsで公開されます。

更新された定数ページから (まだ公開されていませんが、本日公開予定です):

利用可能なアルゴリズム:

  • PASSWORD_BCRYPT (integer)

    PASSWORD_BCRYPTCRYPT_BLOWFISHアルゴリズムを使用して新しいパスワード ハッシュを作成するために使用されます。

    これにより、常に「$2y$」crypt 形式を使用したハッシュが生成されます。これは常に 60 文字幅です。

    サポートされているオプション:

    • salt - パスワードをハッシュするときに使用するソルトを手動で提供します。これは上書きされ、ソルトが自動的に生成されるのを防ぐことに注意してください。

      省略した場合、ハッシュされたパスワードごとに password_hash() によってランダムなソルトが生成されます。これは意図した動作モードです。

    • cost - 使用すべきアルゴリズムのコストを示します。これらの値の例は、crypt() ページにあります。

      省略した場合、デフォルト値の 10 が使用されます。これは適切なベースライン コストですが、ハードウェアによっては増やすことを検討することもできます。

  • PASSWORD_DEFAULT (integer)

    アルゴリズムが指定されていない場合にハッシュに使用するデフォルトのアルゴリズム。これは、新しい強力なハッシュ アルゴリズムがサポートされている新しい PHP リリースで変更される可能性があります。

    この定数は時間の経過とともに変化する可能性がある (そして変化する可能性が高い) ことに注意してください。したがって、結果のハッシュの長さが変わる可能性があることに注意してください。したがって、PASSWORD_DEFAULT を使用する場合は、結果のハッシュを 60 文字以上 (推奨される幅は 255) を格納できる方法で格納する必要があります。

    この定数の値:

    • PHP 5.5.0 - PASSWORD_BCRYPT

いつ、どのPASSWORD_DEFAULTように更新されるかについては、password_hash()ドキュメント ページに記載されています。

注:この関数によってサポートされているアルゴリズムの更新 (または既定のアルゴリズムへの変更) は、次の規則に従う必要があります。

  • 新しいアルゴリズムは、デフォルトになる前に、PHP の少なくとも 1 つのフル リリースのコアに含まれている必要があります。したがって、たとえば、新しいアルゴリズムが 5.5.5 に追加された場合、5.7 までデフォルトの対象にはなりません (5.6 が最初の完全なリリースになるため)。ただし、5.6.0 で別のアルゴリズムが追加された場合は、5.7.0 でもデフォルトの対象になります。

  • デフォルトは、リビジョン リリースではなく、完全なリリース (5.6.0、6.0.0 など) でのみ変更する必要があります。これに対する唯一の例外は、現在のデフォルトに重大なセキュリティ上の欠陥が見つかった緊急時です。

于 2013-06-21T13:57:39.407 に答える