Files
doc-forge-reborn/backend/app/core/security.py
T
2026-07-08 20:02:29 +08:00

26 lines
664 B
Python

import base64
import hashlib
from cryptography.fernet import Fernet
from app.core.config import get_settings
def _derive_fernet_key(secret: str) -> bytes:
digest = hashlib.sha256(secret.encode("utf-8")).digest()
return base64.urlsafe_b64encode(digest)
def _get_fernet() -> Fernet:
settings = get_settings()
key = _derive_fernet_key(settings.SECRET_KEY)
return Fernet(key)
def encrypt_api_key(api_key: str) -> str:
f = _get_fernet()
return f.encrypt(api_key.encode("utf-8")).decode("utf-8")
def decrypt_api_key(encrypted_key: str) -> str:
f = _get_fernet()
return f.decrypt(encrypted_key.encode("utf-8")).decode("utf-8")