php5.5 バージョンを使用する場合、ハッシュの作成と検証の方法ははるかに簡単です。PHP 5.5 では、password_get_info()、password_hash()、password_needs_rehash()、password_verify() という 4 つの関数が提供されます。ハッシュの作成と検証を迅速に実装します。
まず、password_hash() 関数について説明します。これは、新しいパスワードを作成するためのハッシュとして使用されます。これには、パスワード、ハッシュ アルゴリズム、オプションの 3 つのパラメータが含まれます。最初の 2 つの項目は必須です。この関数は次の例に従って使用できます:
コードは次のとおりです | コードをコピー |
$password = 'foo'; |
このハッシュにはオプションを追加していないことがわかります。利用可能なオプションは現在、コストとソルトの 2 つに制限されています。オプションを追加するには、連想配列を作成する必要があります。
コードは次のとおりです | コードをコピー |
$オプション = [ 'コスト' => 10, ; 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) ]; |
password_hash() 関数にオプションを追加すると、ハッシュ値が変更され、より安全になります。
コードは次のとおりです | コードをコピー |
$hash = パスワード_ハッシュ($パスワード,PASSWORD_BCRYPT,$オプション); //$2y$10$JDJ5JDEwJDhsTHV6SGVIQuprRHZnGQsUEtlk8Iem0okH6HPyCoo22 |
ハッシュが作成されたので、password_get_info() を通じて新しいハッシュ値に関する情報を表示できます。 password_get_info() は 1 つの引数 (ハッシュ値) を取り、アルゴリズム (使用されるハッシュ アルゴリズムの整数表現)、アルゴリズム名 (使用されるハッシュ アルゴリズムの人間が判読できる名前)、および使用したオプションを含むパラメーターを返します。値オプションのハッシュ連想配列を作成します)。
コードは次のとおりです | コードをコピー |
var_dump(password_get_info($hash)); /* 配列(3) { ["アルゴリズム"]=> int(1) ["algoName"]=> 文字列(6) "bcrypt" ["オプション"]=> 配列(1) { ["コスト"]=> int(10) } } |
*/パスワード ハッシュ API に追加された最初のパラメータは、password_needs_rehash() で、ハッシュ、ハッシュ アルゴリズム、およびオプションの 3 つのパラメータを受け取ります。最初の 2 つは必須です。 passwd_needs_rehash() は、ハッシュ値が特定のアルゴリズムとオプションを使用して作成されたかどうかを確認するために使用されます。これは、データベースが破損しており、ハッシュを調整する必要がある場合に役立ちます。各ハッシュ値をpassword_needs_rehash()でチェックすることで、既存のハッシュ値が新しいパラメータと一致するかどうかを確認でき、古いパラメータで作成された値のみが影響を受けます。
最後に、ハッシュを作成し、その作成方法を調べ、再ハッシュする必要があるかどうかを確認しました。次に、それを検証する必要があります。プレーン テキストをハッシュ値と照合するには、password_verify() を使用する必要があります。これは、パスワードとハッシュ値の 2 つのパラメータを受け取り、TRUE または FALSE を返します。取得したハッシュが正しいかどうかを確認してみましょう。
コードは次のとおりです | コードをコピー |
$authenticate =password_verify('foo','$2y$10$JDJ5JDEwJDhsTHV6SGVIQuprRHZnGQsUEtlk8Iem0okH6HPyCoo22'); |
例
例 #1 passwd_verify() の例
コードは次のとおりです | コードをコピー |
// これの出所を確認するには、password_hash() の例を参照してください。 if (password_verify('rasmuslerdorf', $hash)) { パスワードは有効です! |
上記の知識があれば、新しい PHP 5.5.0 バージョンでハッシュ パスワードを迅速かつ安全に作成できます。
の 4 つの関数が提供されます。