import base64
from cryptography.fernet import Fernet
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

SALT = b'adaptive_hedge_salt_2024'

def derive_key(password: str) -> bytes:
    kdf = PBKDF2HMAC(
        algorithm=hashes.SHA256(),
        length=32,
        salt=SALT,
        iterations=100000,
    )
    return base64.urlsafe_b64encode(kdf.derive(password.encode()))

def encrypt_text(text: str, password: str) -> str:
    if not text:
        return ""
    f = Fernet(derive_key(password))
    return f.encrypt(text.encode()).decode()

def decrypt_text(encrypted: str, password: str) -> str:
    if not encrypted:
        return ""
    f = Fernet(derive_key(password))
    return f.decrypt(encrypted.encode()).decode()
