そのため、PHP 5.5.0の最終リリースがリリースされました。 新機能についての簡単な説明
は、公式ウェブサイトの投稿または
「ロシア語に翻訳」にあります。
「PHPのコルーチンと非ブロッキング関数の操作」や
「最終的にPHP 5.5に登場する可能性がある」など、PHP 5.5.0の新機能に関する記事がすでにハブに
ありました 。この記事では、PHP 5.5.0
「パスワードハッシュ
API 」の新機能の1つについて説明し
ます。被保険者にエラーを提供し、ハッシュによるパスワードの有効性を生成および検証するための高レベル関数を使いやすくします。 新しいAPIの主な違いは、信頼性の高いハッシュを生成し、開発者からソルトを手動で指定してハッシュアルゴリズムを選択する操作を隠すことです(デフォルトでは、Bcryptが使用されます)。 ハッシュの作成は「$ hash = password_hash($ password、PASSWORD_DEFAULT);」の実行に限定され、呼び出しの検証は「password_verify($ password、$ hash)」です。 新しいAPIが導入された理由は、ソルトの生成に対する多くの開発者の不注意な態度と、検索に対して堅牢ではないハッシュアルゴリズムの幅広い選択にありました。
定数、関数、およびそれらを使用するコードが考慮されます。
定義済みの定数以下にリストされている定数は、PHPコアの一部として常に利用可能です。
PASSWORD_BCRYPT (整数)= 1
PASSWORD_BCRYPTは、
CRYPT_BLOWFISHアルゴリズムを使用して新しいパスワードハッシュを作成するために使用されます。
PASSWORD_DEFAULT (整数)= PASSWORD_BCRYPT
アルゴリズムが指定されていない場合、デフォルトのハッシュアルゴリズムが使用されます。 新しい、より効率的な(たとえば、Scrypt)ハッシュアルゴリズムがサポートされると、PHPの新しいバージョンで変更される可能性があります。
パスワードハッシュ関数
array
password_get_info (string $ hash)-このハッシュに関する情報を返します。
3つの要素(キー)を持つ連想配列を返します。
-アルゴリズム(
algo )、
パスワードアルゴリズム定数に対応し
ます 。
-アルゴリズムの名前(
algoName )。人間が読み取れるアルゴリズムの名前を持ちます。
-password_hash()を呼び出すときに提供される機能を含む、オプション(
options )の連想配列。
string
password_hash (string $ password、integer $ algo [、array $ options])-新しいパスワードハッシュを作成します。
- passwordはユーザーのパスワードです。
- algoは、使用されるパスワードハッシュアルゴリズムを示す定数です。 PHPの新しいバージョンで利用可能な、より効率的なアルゴリズムに自動的に更新する場合は、デフォルトのアルゴリズムを常に使用できます。
- options-オプションの連想配列。 現時点では、2つのオプションのみがサポートされています:salt-パスワードのハッシュに使用されるsaltと、パスワードを計算するアルゴリズムのコストを示すコスト。 これらの値の例は、 crypt()関数のドキュメントページにあります。 省略すると、ランダムなソルトが作成され、デフォルトのアルゴリズム計算コストが使用されます。
暗号化されたパスワードを返します。エラーの場合はFALSEを返します。
boolean
password_needs_rehash (string $ hash、string $ algo [、string $ options])-提供されたハッシュが与えられたアルゴリズムとオプションと一致するかどうかをチェックします。 そうでない場合、ハッシュを変更する必要があると見なされます。
- hashはpassword_hash()によって作成されたハッシュです。
- algoは、使用されるパスワードハッシュアルゴリズムを示す定数です。
- options-オプションの連想配列。 現時点では、2つのオプションのみがサポートされています:salt-パスワードのハッシュに使用されるsaltと、パスワードを計算するアルゴリズムのコストを示すコスト。 これらの値の例は、 crypt()関数のドキュメントページにあります。 省略すると、デフォルトのアルゴリズム計算コストが使用されます。
指定されたアルゴリズムとオプションに一致するようにハッシュを変更する必要がある場合はTRUE、そうでない場合はFALSEを返します。
boolean
password_verify (string $ password、string $ hash)-パスワードが指定されたハッシュと一致するかどうかを確認します。 このハッシュは、password_hash()または通常のcrypt()ハッシュを使用して作成できます。
パスワードとハッシュが一致する場合はTRUE、そうでない場合はFALSEを返します。
コードと出力<?php $options = [ 'cost' => 7, 'salt' => 'BCryptRequires22Chrcts', ]; $hash['hash'][] = password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options);
出力結果 array(4) { ["hash"]=> array(2) { [0] => string(60) "$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq" [1] => string(60) "$2y$10$CYb5tz9f5IVAgqX7SkIv9ufbi6yYlMQgAHcV4ixXjYSHJZl9KwLrK" } ["info"]=> array(2) { [0]=> array(3) { ["algo"] => int(1) ["algoName" ]=> string(6) "bcrypt" ["options"] => array(1) { ["cost"] => int(7) } } [1]=> array(3) { ["algo"] => int(1) ["algoName"] => string(6) "bcrypt" ["options"] => array(1) { ["cost"] => int(10) } } } ["rehash"]=> array(3) { [0] => bool(false) [1] => bool(true) [2] => bool(false) } ["pas_verify"]=> array(4) { [0] => bool(true) [1] => bool(true) [2] => bool(false) [3] => bool(false) } }
また、サイト
3v4l.orgでは 、さまざまなバージョンのPHPでVLDオペコードと比較パフォーマンスを確認できます。 記事のコードパフォーマンスの例を次に示します。
バージョン | システム時間 | ユーザー時間 | マックス メモリ使用量 |
5.5.0alpha1 | 0.018秒 | 0.267秒 | 12,152 MiB |
5.5.0alpha2 | 0.018秒 | 0.267秒 | 12,148 MiB |
5.5.0alpha3 | 0.015秒 | 0.271秒 | 12,148 MiB |
5.5.0alpha4 | 0.019秒 | 0.268秒 | 12,164 MiB |
5.5.0alpha5 | 0.014秒 | 0.270秒 | 12,195 MiB |
5.5.0alpha6 | 0.016秒 | 0,304秒 | 12,219 MiB |
5.5.0beta1 | 0.017秒 | 0.270秒 | 12,270 MiB |
5.5.0beta2 | 0.027秒 | 0.294秒 | 12,270 MiB |
5.5.0beta3 | 0.022秒 | 0.265秒 | 12,656 MiB |
5.5.0beta4 | 0.016秒 | 0.299秒 | 12,656 MiB |
残念ながら、最終的な5.5.0リリースはまだリストにありません。
将来のアップデートの可能性現時点では、デフォルトの暗号化アルゴリズム(これまで1つしかサポートされていません)は、プリセット定数PASSWORD_DEFAULTによって決定されます。 新しいバージョンの言語では、デフォルトの暗号化アルゴリズムを設定で設定できます。
PHPの以降のバージョンでより効果的な保護を提供するには、パスワード(BCrypt)を計算するアルゴリズムコストを増やす必要があります。これにより、技術機器の改善により、password_hash()関数が時間の経過とともに有効になります。
今後の懸念暗号の性質上、将来の互換性は深刻な懸念事項です。 安全であるために、これらの機能は将来的に変化する要件に適応する必要があります。
参照:
パスワードハッシュAPIドキュメントコメントのリクエスト:シンプルなパスワードハッシュAPIの追加-Anthony Ferrara新しいPHP.netサイトのベータ版EugeneOZによる PS:
これらの関数を使用して、コードを変更せずにネイティブ関数に切り替えることができます。
次のファイルを使用してください:
github.com/ircmaxell/password_compat/blob/master/lib/password.php (PHP required> = 5.3.7)
PHPコードで関数を書いたのと同じ人によって書かれています-Anthony Ferrara
PSはHPでスペルミスと翻訳エラーを記述します
謝辞:
ありがとう
nixmale 、
newdya 、示されたエラーの場合。
サプリメントのEugeneOZ 。
@Possible Future Updatesをより理解しやすいオプションに変更するための@yourway。