Laravel-暗号化

暗号化は、サードユーザーが情報を読み取れないように、いくつかのアルゴリズムを使用してプレーンテキストをメッセージに変換するプロセスです。これは、侵入者が転送された情報を標的にする可能性が少ないため、機密情報を送信するのに役立ちます。

暗号化は、と呼ばれるプロセスを使用して実行されます Cryptography。暗号化されるテキストは、Plain Text 暗号化後に取得されたテキストまたはメッセージが呼び出されます Cipher Text。暗号文を平文に変換するプロセスは、Decryption

Laravelは AES-256 そして AES-128暗号化にOpenSSLを使用する暗号化。Laravelに含まれるすべての値は、プロトコルを使用して署名されていますMessage Authentication Code 暗号化されると、基になる値が改ざんされないようにします。

構成

を生成するために使用されるコマンド key Laravelで以下に示します-

php artisan key:generate

このコマンドはPHPセキュアランダムバイトジェネレーターを使用し、以下のスクリーンショットに示すような出力を確認できることに注意してください。

上記のコマンドは、Webアプリケーションで使用できるキーの生成に役立ちます。以下に示すスクリーンショットを確認してください-

注意

暗号化の値は、 config/app.php ファイル。暗号化のための2つのパラメータが含まれています。 key そして cipher。このキーを使用する値が適切に調整されていない場合、Laravelで暗号化されたすべての値は安全ではありません。

暗号化プロセス

値の暗号化は、 encrypt helperLaravelクラスのコントローラーで。これらの値は、OpenSSLおよびAES-256暗号を使用して暗号化されます。暗号化されたすべての値は、暗号化された文字列の変更をチェックするためにメッセージ認証コード(MAC)で署名されます。

以下に示すコードはコントローラーで言及されており、秘密または機密メッセージを保存するために使用されます。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class DemoController extends Controller{
   **
      * Store a secret message for the user.
      *
      * @param Request $request
      * @param int $id
      * @return Response
   */
   
   public function storeSecret(Request $request, $id) {
      $user = User::findOrFail($id);
      $user->fill([
         'secret' => encrypt($request->secret)
      ])->save();
   }
}

復号化プロセス

値の復号化は、 decrypt helper。次のコード行を確認してください-

use Illuminate\Contracts\Encryption\DecryptException;

// Exception for decryption thrown in facade
try {
   $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
   //
}

無効なMACが使用されているために復号化のプロセスが成功しない場合、適切な例外がスローされることに注意してください。