[python] FastAPI에서 암호화 및 복호화 처리하기

암호화 및 복호화는 보안과 관련된 중요한 작업입니다. FastAPI에서는 cryptography 라이브러리를 활용하여 암호화 및 복호화를 간편하게 처리할 수 있습니다. 이 글에서는 FastAPI에서 암호화와 복호화를 처리하는 방법을 안내하겠습니다.

1. cryptography 라이브러리 설치하기

FastAPI에서 암호화 및 복호화를 처리하기 위해 cryptography 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 설치하세요:

pip install cryptography

2. 암호화와 복호화 함수 정의하기

먼저, cryptography 라이브러리에서 제공하는 암호화 및 복호화 함수를 정의해야 합니다. 아래의 코드를 참고하여 필요한 함수들을 정의하세요:

from cryptography.fernet import Fernet

# 암호화 키 생성
def generate_key():
    key = Fernet.generate_key()
    return key

# 암호화
def encrypt_message(message, key):
    cipher_suite = Fernet(key)
    cipher_text = cipher_suite.encrypt(message.encode())
    return cipher_text

# 복호화
def decrypt_message(cipher_text, key):
    cipher_suite = Fernet(key)
    plain_text = cipher_suite.decrypt(cipher_text.encode())
    return plain_text.decode()

암호화 키를 생성하는 generate_key() 함수와 메시지를 암호화 및 복호화하는 encrypt_message()decrypt_message() 함수를 정의하였습니다.

3. FastAPI에서 암호화 및 복호화 처리하기

FastAPI 애플리케이션에서 암호화 및 복호화를 처리하기 위해서는 위에서 정의한 함수들을 활용해야 합니다. 아래의 코드를 참고하여 암호화 및 복호화를 처리하는 라우터를 만들어보세요:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Message(BaseModel):
    text: str

# 암호화 키 생성
key = generate_key()

# 메시지 암호화 및 복호화 API
@app.post("/encrypt")
def encrypt(message: Message):
    encrypted_message = encrypt_message(message.text, key)
    return {"encrypted_message": encrypted_message}

@app.post("/decrypt")
def decrypt(message: Message):
    decrypted_message = decrypt_message(message.text, key)
    return {"decrypted_message": decrypted_message}

암호화 키는 애플리케이션 실행 시에 한 번만 생성하도록 하고, encrypt()decrypt() 라우터에서 암호화와 복호화를 처리하는 함수를 호출하여 결과를 반환합니다.

4. 실행 및 테스트

FastAPI 애플리케이션을 실행한 후, http://localhost:8000/docs 에서 Swagger UI를 통해 API를 테스트 할 수 있습니다. /encrypt 라우터를 사용하여 메시지를 암호화하고, /decrypt 라우터를 사용하여 암호화된 메시지를 복호화할 수 있습니다.

참고 자료