ホームページ >バックエンド開発 >PHPチュートリアル >PHPにおけるAES256暗号化技術とそのフレームワークへの応用について詳しく解説

PHPにおけるAES256暗号化技術とそのフレームワークへの応用について詳しく解説

WBOY
WBOYオリジナル
2023-06-09 12:25:273580ブラウズ

インターネットの発展と普及に伴い、データ セキュリティへの注目がますます高まっています。暗号化技術はデータの送信や保存時に非常に有効な手段であり、暗号化によりデータの機密性と完全性を確保できます。 PHP では、AES256 暗号化技術が非常によく使われている暗号化方式ですが、この記事ではそのフレームワークへの適用方法について詳しく紹介します。

  1. AES256 暗号化テクノロジの概要
    AES (Advanced Encryption Standard) は高度な暗号化標準であり、最も人気のある最新の対称暗号化アルゴリズムの 1 つです。 AES256 は、キー長が 256 ビットの AES 暗号化アルゴリズムを指します。このアルゴリズムでは対称暗号化が使用されます。つまり、データの暗号化と復号化に同じキーを使用できます。

AES256 暗号化アルゴリズムには、次の利点があります。

  • 高セキュリティ: AES256 暗号化アルゴリズムは、より長いキー長を使用するため、より低いキーを使用した暗号化よりも優れています。長さのアルゴリズム、より安全です。
  • 高効率: AES256 暗号化アルゴリズムは暗号化と復号化の速度が速く、大量のデータの暗号化に適しています。
  1. PHP での AES256 アプリケーション メソッド
    PHP では、openssl 関数ライブラリを使用して、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. フレームワークでの AES256 アプリケーション メソッド
    別の PHP プログラムで AES256 暗号化アルゴリズムを使用することに加えて、アルゴリズムをさまざまな PHP フレームワークに適用して、より安全なデータ転送とストレージを提供することもできます。 。 Laravel フレームワークを例に挙げると、カスタム ミドルウェアを通じてリクエスト データとレスポンス データの暗号化と復号化を実装できます。サンプルコードは次のとおりです:

(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;
    }
}

ここで、「api」は、暗号化および復号化ミドルウェア AppHttpMiddlewareEncryptMiddleware を使用するアプリケーション プログラミング インターフェイスです。 :class は暗号化ミドルウェアを表し、AppHttpMiddlewareDecryptMiddleware::class は復号化ミドルウェアを表します。

概要
    AES256 暗号化テクノロジは、現在最も広く使用されている暗号化アルゴリズムの 1 つであり、PHP プログラムでも広く使用されています。フレームワークで AES256 暗号化アルゴリズムを使用すると、データの送信と保存のセキュリティが効果的に確保され、プログラムの信頼性が向上します。上記の内容は、PHP における AES256 暗号化技術の適用について詳しく説明したものであり、読者の皆様のお役に立てれば幸いです。

以上がPHPにおけるAES256暗号化技術とそのフレームワークへの応用について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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