from cryptography.fernet import Fernet, InvalidToken class TokenCipher: """Шифрует OAuth-токены перед хранением в БД.""" def __init__(self, key: str) -> None: try: self._fernet = Fernet(key.encode("ascii")) except (ValueError, UnicodeEncodeError) as error: raise RuntimeError("TOKEN_ENCRYPTION_KEY is invalid") from error def encrypt(self, value: str) -> bytes: return self._fernet.encrypt(value.encode("utf-8")) def decrypt(self, value: bytes) -> str: try: return self._fernet.decrypt(value).decode("utf-8") except InvalidToken as error: raise RuntimeError("Не удалось расшифровать OAuth-токен") from error