본문 바로가기

암호화

번역일: 2026년 6월 20일

암호화

소개

Laravel의 암호화 서비스는 OpenSSL을 기반으로 AES-256 및 AES-128 알고리즘을 사용해 값을 안전하게 암호화하고 복호화할 수 있는 간편한 인터페이스를 제공합니다. 암호화된 모든 값에는 MAC(메시지 인증 코드)이 서명으로 추가되므로, 암호화 이후 값이 외부에서 변조되었는지 감지할 수 있습니다.

설정

암호화 기능을 사용하기 전에 config/app.php 파일의 key 설정값을 지정해야 합니다. 이 값은 APP_KEY 환경 변수를 통해 설정됩니다. 키 생성에는 반드시 php artisan key:generate 명령어를 사용하세요. 이 명령어는 PHP의 안전한 난수 생성기를 활용해 암호학적으로 안전한 키를 만들어 줍니다. 일반적으로 APP_KEY 값은 Laravel 설치 과정에서 자동으로 생성됩니다.

NOTE

APP_KEY는 애플리케이션 보안의 핵심입니다. 절대 공개 저장소(예: GitHub)에 커밋하지 마세요. .env 파일이 .gitignore에 포함되어 있는지 반드시 확인하세요.

암호화 기능 사용하기

값 암호화

Crypt 파사드의 encryptString 메서드를 사용해 값을 암호화할 수 있습니다. 암호화에는 OpenSSL과 AES-256-CBC 암호화 방식이 사용되며, 암호화된 값에는 MAC이 함께 포함됩니다. 이 MAC 덕분에 악의적인 사용자가 암호문을 변조한 경우 복호화가 차단됩니다.

아래 예시는 사용자의 API 토큰을 암호화해 저장하는 컨트롤러입니다:

<?php namespace App\Http\Controllers; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Crypt; class DigitalOceanTokenController extends Controller { /** * 사용자의 DigitalOcean API 토큰을 저장합니다. */ public function store(Request $request): RedirectResponse { $request->user()->fill([ 'token' => Crypt::encryptString($request->token), ])->save(); return redirect('/secrets'); } }

값 복호화

Crypt 파사드의 decryptString 메서드를 사용해 암호화된 값을 복호화할 수 있습니다. MAC이 유효하지 않거나 값이 변조된 경우처럼 정상적으로 복호화할 수 없을 때는 Illuminate\Contracts\Encryption\DecryptException 예외가 발생합니다. 따라서 복호화 시에는 반드시 예외 처리를 해야 합니다:

use Illuminate\Contracts\Encryption\DecryptException; use Illuminate\Support\Facades\Crypt; try { $decrypted = Crypt::decryptString($encryptedValue); } catch (DecryptException $e) { // 복호화 실패 처리 (변조된 값 또는 잘못된 키) }

이 문서는 Laravel 공식 문서(MIT)를 한국 개발자를 위해 번역·재구성한 것입니다.

번역일: 2026년 6월 20일