ハッシュ


{ヒント} Bcrypt は、「暗号化係数」を任意に調整できるため、ハードウェアの能力に応じてハッシュの生成に必要な時間を増やすことができるため、パスワードのハッシュ化に最適です。

設定ファイルは config/hashing.php## で設定できます。 # でデフォルトのハッシュドライバーを設定します。現在、Bcrypt および Argon2

(Argon2i および Argon2id のバリアント) の 3 つのドライバーがサポートされています。

{note} Argon2i ドライバーには PHP 7.2.0 以降が必要で、Argon2id ドライバーには PHP 7.3.0 以降が必要です。

基本的な使い方

Hash ファサードの make# を呼び出すことができます## パスワードを暗号化する方法:

<?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Hash;
    use App\Http\Controllers\Controller;class UpdatePasswordController extends Controller{ 
    /**
     * 更新用户密码。
     *
     * @param  Request  $request
     * @return Response
     */    
  public function update(Request $request)   
   {       
    // 验证新密码的长度        
    $request->user()->fill([        
        'password' => Hash::make($request->newPassword)      
      ])->save();  
    }
 }

Bcrypt 暗号化係数を調整する

Bcrypt アルゴリズムを使用する場合は、make メソッドの rounds オプションを使用して、暗号化係数を構成できます。アルゴリズム。ただし、ほとんどのアプリケーションでは、デフォルト値で十分です。

$hashed = Hash::make('password', [ 
   'rounds' => 12
]);

Argon2 暗号化係数を調整します

Argon2 アルゴリズムを使用する場合は、 を使用します。 make メソッドの ##memorytime、および threads オプションを使用して、アルゴリズムの暗号化係数を構成します。ほとんどのアプリケーションでは、デフォルト値で十分です:

$hashed = Hash::make('password', [ 
   'memory' => 1024,    
   'time' => 2,    
   'threads' => 2,
]);

{tip} これらのオプションの詳細については、

PHP 公式ドキュメントを参照してください。

パスワード ハッシュ検証

check メソッドは、指定された暗号化されていない文字列が指定されたハッシュと一致するかどうかを検証できます。一貫性のある。ただし、Laravel の組み込み LoginController コントローラーを使用する場合は、コントローラーが自動的にこのメソッドを呼び出すため、このメソッドを直接使用する必要はありません。

if (Hash::check('plain-text', $hashedPassword)) { 
   // 密码匹配
 }

チェックパスワードを再ハッシュする必要がある場合は、

needsRehash メソッドを使用すると、ハッシュの暗号化係数が変更されたときに、パスワードが新しい暗号化係数で再暗号化されたかどうかを確認できます:

if (Hash::needsRehash($hashed)) { 
   $hashed = Hash::make('plain-text');
 }

この記事は、