Laravel-encryption
Laravel-暗号化
暗号化は、3番目のユーザーが情報を読み取れないように、いくつかのアルゴリズムを使用してプレーンテキストをメッセージに変換するプロセスです。 これは、侵入者が転送された情報を標的にする可能性が低いため、機密情報の送信に役立ちます。
暗号化は Cryptography と呼ばれるプロセスを使用して実行されます。 暗号化されるテキストは*プレーンテキスト*と呼ばれ、暗号化後に取得されるテキストまたはメッセージは*暗号テキスト*と呼ばれます。 暗号化テキストをプレーンテキストに変換するプロセスは、*復号化*と呼ばれます。
Laravelは、暗号化にOpen SSLを使用する AES-256 および AES-128 暗号化を使用します。 Laravelに含まれるすべての値は、プロトコル Message Authentication Code を使用して署名されているため、暗号化されると基になる値を改ざんすることはできません。
設定
Laravelで*キー*を生成するために使用されるコマンドは以下に示されています-
php artisan key:generate
このコマンドはPHPセキュアランダムバイトジェネレーターを使用し、以下のスクリーンショットに示すように出力を確認できることに注意してください-
上記のコマンドは、Webアプリケーションで使用できるキーの生成に役立ちます。 以下に示すスクリーンショットを観察します-
Note
暗号化の値は、 config/app.php ファイルで適切に調整されます。このファイルには、暗号化の2つのパラメーター、つまり key と cipher が含まれています。 このキーを使用する値が適切に調整されていない場合、Laravelで暗号化されたすべての値は安全ではなくなります。
暗号化プロセス
値の暗号化は、Laravelクラスのコントローラーで encrypt helper を使用して実行できます。 これらの値は、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が使用されているために復号化プロセスが成功しない場合、適切な例外がスローされることに注意してください。