인터넷의 발전과 대중화로 인해 데이터 보안에 대한 관심이 더욱 높아지고 있습니다. 암호화 기술은 데이터 전송 및 저장 중에 매우 효과적인 수단입니다. 암호화는 데이터의 기밀성과 무결성을 보장할 수 있습니다. 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와 $ciphertext는 스플라이싱을 통해 문자열로 결합됩니다.
(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는 모두 암호화 과정에서 해당 변수와 일치하며 최종적으로 echo 문을 통해 복호화된 데이터가 출력됩니다. .
(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) 복호화 미들웨어 정의
암호화 미들웨어 외에도 데이터 복호화를 위한 미들웨어도 정의해야 합니다. 샘플 코드는 다음과 같습니다.
<?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; } }
이 미들웨어는 요청에서 암호화된 데이터를 가져와 처리합니다. 복호화 작업을 수행한 후 복호화된 데이터를 다음 미들웨어에 전달합니다.
(3) 미들웨어 등록
마지막으로 위의 미들웨어를 Laravel 프레임워크에 등록해야 합니다. 미들웨어는 아래와 같이 app/Http/Kernel.php 파일의 $middlewareGroups 속성에 추가될 수 있습니다.
protected $middlewareGroups = [ 'web' => [ // ... ], 'api' => [ // ... AppHttpMiddlewareEncryptMiddleware::class, AppHttpMiddlewareDecryptMiddleware::class, ], ];
여기서 'api'는 AppHttpMiddlewareEncryptMiddleware::class로 표시되는 암호화 및 암호 해독 미들웨어를 사용하기 위한 애플리케이션 프로그래밍 인터페이스입니다. 암호화 미들웨어인 AppHttpMiddlewareDecryptMiddleware::class는 복호화 미들웨어를 나타냅니다.
위 내용은 PHP의 AES256 암호화 기술과 프레임워크에서의 적용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!