암호화

시작하기

라라벨의 암호화 서비스는 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) {
    //
}