ホームページ >PHPフレームワーク >Laravel >laravelの暗号化方式とは何ですか?

laravelの暗号化方式とは何ですか?

青灯夜游
青灯夜游オリジナル
2021-12-21 11:23:054806ブラウズ

Laravel の暗号化方法: 1. ハッシュを使用し、構文 "bcrypt('暗号化する必要があるテキスト')" または "Hash::make('暗号化する必要があるテキスト')"; 2. を使用します。 Laravelの暗号化 構文は「encrypt('暗号化する必要があるテキスト')」です。

laravelの暗号化方式とは何ですか?

このチュートリアルの動作環境: Windows 7 システム、Laravel 6 バージョン、DELL G3 コンピューター。

Laravel の 2 つの暗号化方法

Hash

##Laravel の Hash は、ユーザーのパスワードと Argon2 ハッシュ アルゴリズムを保存するための安全な Bcrypt を提供します。

注: Bcrypt は、「作業係数」を調整できるため、パスワードをハッシュするための優れた選択肢です。つまり、ハードウェアの機能が増加すると、ハッシュの生成にかかる時間も増加します。

構成

構成ファイル config/hashing.php にデフォルトのハッシュ ドライバー構成を適用します。現在、Bcrypt と Argon2 の 2 つのドライバーがサポートされています。

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

1つ目

bcrypt('admin888')

2つ目

use Illuminate\Support\Facades\Hash;
$pwd = Hash::make('admin888');    //加密存储

検証方法

if (Hash::check('qwe123456', $pwd)) {
    // 密码匹配...
}

public function login()
{
    $credentials = request(['email', 'password']);

    if (! $token = auth('api')->attempt($credentials)) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }

    return $this->respondWithToken($token);
}

暗号化

Laravel の暗号は OpenSSL を使用して AES-256 および AES-128 暗号化を提供します。 Laravel 独自の暗号化設定を使用し、独自の「独自の」暗号化アルゴリズムを導入しようとしないことを強くお勧めします。 Laravel で暗号化されたすべての値は、メッセージ認証コード (MAC) を使用して署名されるため、基になる値は暗号化されると変更できなくなります。

設定

Laravel の暗号化機能を使用する前に、設定ファイル config/app.php で key オプションを 32 ビットのランダムな文字列に設定する必要があります。このキーは、PHP の安全なランダム バイト ジェネレーターを使用してキーの値を構築する phpArtisan key:generate コマンドを使用して生成できます。この値が設定されていない場合、Laravel で暗号化されたすべての値は安全ではありません。

暗号化

ヘルパー関数 encrypt を使用してデータを暗号化できます。暗号化された値はすべて、OpenSSL および AES-256-CBC 暗号を使用して暗号化されます。さらに、暗号化された文字列の変更を防ぐために、すべての暗号化された値はメッセージ認証コード (MAC) で署名されます。

encrypt('密码')

シリアル化なしの暗号化

暗号化された値は、暗号化中にシリアル化関数serializeによって処理され、オブジェクトと配列の暗号化が可能になります。したがって、非 PHP クライアントが受信した暗号化データはシリアル化を解除する必要があります。

シリアル化せずにデータを暗号化および復号化する場合は、Crypt ファサードによって提供される encryptString メソッドと decryptString メソッドを使用できます。

use Illuminate\Support\Facades\Crypt;

$encrypted = Crypt::encryptString('Hello world.');

$decrypted = Crypt::decryptString($encrypted);

Decryption

補助関数decryptを使用して、暗号化されたデータを復号化できます。 MAC が無効な場合など、値を復号化できない場合は、Illuminate\Contracts\Encryption\DecryptException がスローされます:

use Illuminate\Contracts\Encryption\DecryptException;

try {
    $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
    //
}

関連する推奨事項:

最新の 5 つの Laravel ビデオ チュートリアル

以上がlaravelの暗号化方式とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。