ハッシュ
- ##はじめに Laravel
- Hash ファサードは、ユーザー パスワードを保存するための安全な Bcrypt および Argon2 ハッシュ暗号化方式を提供します。 Laravel アプリケーションで組み込みの LoginController クラスと
- RegisterController クラスを使用する場合、デフォルトで登録と認証に Bcrypt が使用されます。
設定ファイルは
config/hashing.php## で設定できます。 # でデフォルトのハッシュドライバーを設定します。現在、
Bcrypt および
Argon2
{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
メソッドの ##memory、
time、および
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'); }この記事は、