インターネットの発展と普及に伴い、データ セキュリティへの注目がますます高まっています。暗号化技術はデータの送信や保存時に非常に有効な手段であり、暗号化によりデータの機密性と完全性を確保できます。 PHP では、AES256 暗号化技術が非常によく使われている暗号化方式ですが、この記事ではそのフレームワークへの適用方法について詳しく紹介します。
AES256 暗号化アルゴリズムには、次の利点があります。
(1) ランダムキーの生成
AES256 暗号アルゴリズムを暗号化演算に使用する前に、まずランダムキーを生成する必要があります。以下に示すように、openssl 関数ライブラリの openssl_random_pseudo_bytes() 関数を通じてランダム キーを生成できます。
$key = openssl_random_pseudo_bytes(32);
(2) 暗号化されたデータ
ランダム キーを生成した後、そのキーをデータに使用できます。暗号化されています。 openssl_encrypt() 関数を使用して暗号化操作を実行できます。サンプルコードは次のとおりです:
$plaintext = "Hello World"; $cipher = "aes-256-cbc"; $ivlen = openssl_cipher_iv_length($cipher); $iv = openssl_random_pseudo_bytes($ivlen); $ciphertext = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv); $ciphertext = $iv . $ciphertext;
このうち、$plaintext は暗号化する元のデータを表し、$cipher は暗号化アルゴリズムを表し、$key は暗号化されたデータを表します。 $ivlen は暗号化アルゴリズムに必要な iv の長さを示し、$iv は暗号化プロセスで使用される初期化ベクトルを示します。最後に、$iv と $ciphertext がスプライシングによって 1 つの文字列に結合されます。
(3) データの復号化
データを復号化する場合、openssl_decrypt() 関数を使用して、暗号化された暗号文を元のデータに復号化できます。サンプルコードは次のとおりです。
$cipher = "aes-256-cbc"; $ivlen = openssl_cipher_iv_length($cipher); $iv = substr($ciphertext, 0, $ivlen); $ciphertext = substr($ciphertext, $ivlen); $plaintext = openssl_decrypt($ciphertext, $cipher, $key, OPENSSL_RAW_DATA, $iv); echo $plaintext;
このうち、$cipher、$ivlen、$iv、$ciphertext、$key は暗号化プロセスの対応する変数と一致し、最終的に復号化されたデータが出力されます。エコーステートメント。
(1) 暗号化ミドルウェアの定義
まず、データ暗号化専用のミドルウェアを定義する必要があります。Laravel フレームワークでは、artisan コマンドを使用して、
php artisan make:middleware EncryptMiddleware
次に、生成された EncryptMiddleware.php コードを次の内容に変更します:
<?php namespace AppHttpMiddleware; use Closure; use IlluminateContractsEncryptionEncrypter; use IlluminateSupportFacadesApp; class EncryptMiddleware { /** * The encrypter instance. */ protected $encrypter; /** * Create a new middleware instance. * * @param Encrypter $encrypter * @return void */ public function __construct(Encrypter $encrypter) { $this->encrypter = $encrypter; } /** * Handle an incoming request. * * @param IlluminateHttpRequest $request * @param Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); $content = $response->getContent(); $encryptedContent = $this->encrypter->encrypt($content); $response->setContent($encryptedContent); return $response; } }
このうち、$encrypter は暗号化に使用されるインターフェイスです。 Laravel フレームワーク内のデータ。このインターフェイスの実装を EncryptMiddleware に注入することで参照できます。
(2) 復号ミドルウェアの定義
暗号化ミドルウェアに加えて、データを復号するためのミドルウェアも定義する必要があります。サンプルコードは次のとおりです。リクエストから暗号化されたデータを取得して復号化し、復号化されたデータを次のミドルウェアに渡します。
(3) ミドルウェアの登録
最後に、上記のミドルウェアをLaravelフレームワークに登録する必要があります。以下に示すように、app/Http/Kernel.php ファイルの $middlewareGroups 属性にミドルウェアを追加できます。<?php namespace AppHttpMiddleware; use Closure; use IlluminateContractsEncryptionDecryptException; use IlluminateContractsEncryptionEncrypter; class DecryptMiddleware { /** * The encrypter instance. */ protected $encrypter; /** * Create a new middleware instance. * * @param Encrypter $encrypter * @return void */ public function __construct(Encrypter $encrypter) { $this->encrypter = $encrypter; } /** * Handle an incoming request. * * @param IlluminateHttpRequest $request * @param Closure $next * @return mixed */ public function handle($request, Closure $next) { $encryptedContent = $request->getContent(); try { $content = $this->encrypter->decrypt($encryptedContent); } catch (DecryptException $e) { return response('Invalid encryption', 400); } $response = $next($request->merge(['content' => $content])); return $response; } }
以上がPHPにおけるAES256暗号化技術とそのフレームワークへの応用について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。