암호화
시작하기
라라벨의 암호화 서비스는 AES-256 및 AES-128 암호화를 사용하여 OpenSSL을 통해 텍스트를 암호화하고 해독하기 위한 간단하고 편리한 인터페이스를 제공합니다. 라라벨의 모든 암호화된 값은 메시지 인증 코드(MAC)를 사용하여 서명되므로 일단 암호화되면 기본 값을 수정하거나 변조할 수 없습니다.
설정하기
라라벨의 암호화를 사용하기 전에 config/app.php
설정 파일에서 key
설정 옵션을 설정해야 합니다. 이 설정 값은 APP_KEY
환경 변수에 의해 동작합니다. key:generate
명령은 PHP의 보안 랜덤 바이트 생성기를 사용하여 애플리케이션에 대한 암호화 보안 키를 구축하므로, php artisan key:generate
명령을 사용하여 이 변수의 값을 생성해야 합니다. 일반적으로 APP_KEY
환경 변수의 값은 Laravel 설치 중에 생성됩니다.
Encrypter 사용하기
하나의 값 암호화하기
Crypt
파사드에서 제공하는 encryptString
메소드를 사용하여 값을 암호화할 수 있습니다. 모든 암호화된 값은 OpenSSL 및 AES-256-CBC 암호를 사용하여 암호화됩니다. 또한 모든 암호화된 값은 메시지 인증 코드(MAC)로 서명됩니다. 통합 메시지 인증 코드는 악의적인 사용자에 의해 변조된 값의 암호 해독을 방지합니다.
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
class DigitalOceanTokenController extends Controller
{
/**
* Store a DigitalOcean API token for the user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function storeSecret(Request $request)
{
$request->user()->fill([
'token' => Crypt::encryptString($request->token),
])->save();
}
}
값 복호화 하기
Crypt
파사드에서 제공하는 decryptString
메소드를 사용하여 값을 해독할 수 있습니다. 메시지 인증 코드가 유효하지 않은 경우와 같이 값을 제대로 해독할 수 없으면 Illuminate\Contracts\Encryption\DecryptException
이 발생합니다.
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Crypt;
try {
$decrypted = Crypt::decryptString($encryptedValue);
} catch (DecryptException $e) {
//
}