Spaces:
Running
Running
| from cryptography.fernet import Fernet | |
| import os | |
| class FieldEncryptor: | |
| def __init__(self): | |
| key = os.environ.get("ENCRYPTION_KEY") | |
| if not key: | |
| raise ValueError("ENCRYPTION_KEY environment variable is missing. Application cannot start without it.") | |
| self.fernet = Fernet(key.encode()) | |
| def encrypt(self, value: str) -> str: | |
| if not value: | |
| return value | |
| return self.fernet.encrypt(str(value).encode()).decode() | |
| def decrypt(self, token: str) -> str: | |
| if not token: | |
| return token | |
| try: | |
| return self.fernet.decrypt(token.encode()).decode() | |
| except: | |
| return token # Return as-is if decryption fails | |
| def mask(self, value: str, visible: int = 4) -> str: | |
| """Return masked version for display/logs.""" | |
| if not value or len(value) <= visible: | |
| return "****" | |
| return value[:visible] + "*" * (len(value) - visible) | |
| encryptor = FieldEncryptor() | |