Crypt 파사드란
Laravel의 암호화 서비스는 OpenSSL의 AES-256-CBC 암호화(또는 AES-128-CBC)를 사용해 값의 암호화·복호화를 단순한 인터페이스로 제공합니다. Laravel에서 암호화된 모든 값은 **메시지 인증 코드(MAC)**로 서명되어 있습니다. 따라서 암호화 후의 값이 변조되면 복호화할 수 없게 됩니다.설정
APP_KEY 생성
암호화를 사용하기 전에config/app.php의 key 설정이 필요합니다.
이 값은 APP_KEY 환경 변수에서 읽어 들여집니다.
php artisan key:generate 명령을 사용해 안전한 키를 생성해 주세요.
PHP의 시큐어한 난수 생성기를 사용해 암호학적으로 안전한 키가 생성됩니다.
.env 파일에 저장됩니다.
암호화 키 로테이션
암호화 키를 변경하면 인증된 모든 사용자 세션이 로그아웃됩니다. Laravel은 세션 쿠키를 포함한 모든 쿠키를 암호화하고 있기 때문입니다. 또한 이전 키로 암호화된 데이터는 복호화할 수 없게 됩니다. 이 문제를 완화하기 위해APP_PREVIOUS_KEYS에 오래된 키를 쉼표로 구분하여 나열할 수 있습니다.
암호화
Crypt 파사드의 encryptString 메서드를 사용해 값을 암호화합니다.
암호화된 값은 OpenSSL과 AES-256-CBC 암호를 사용하며, MAC으로 서명됩니다.
복호화
Crypt 파사드의 decryptString 메서드로 암호화된 값을 복호화합니다.
MAC이 무효인 경우 등 정상적으로 복호화할 수 없을 때는 DecryptException이 던져집니다.
모델 캐스트
Eloquent 모델에서encrypted 캐스트를 사용하면 속성의 암호화·복호화를 자동으로 수행할 수 있습니다.
encrypted:* 캐스트는 내부적으로 Crypt::encrypt와 Crypt::decrypt를 사용합니다.
데이터베이스 컬럼 타입은 text 또는 longText를 권장합니다.실용 예시: 개인정보의 암호화 저장
개인정보(주민등록번호, 신용카드 번호 등)를 데이터베이스에 안전하게 저장하는 전형적인 패턴입니다.마이그레이션
모델
컨트롤러
정리
다음 단계
해시
비밀번호의 안전한 해시화와 검증 방법을 배웁니다.
인가
폴리시와 게이트를 사용한 접근 제어를 설명합니다.