암호화 및 복호화는 보안과 관련된 중요한 작업입니다. 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
라우터를 사용하여 암호화된 메시지를 복호화할 수 있습니다.