File size: 687 Bytes
1a2b901
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import json
from cryptography.fernet import Fernet
from django.conf import settings


class EncryptionService:
    def __init__(self):
        key = settings.FIELD_ENCRYPTION_KEY
        if not key:
            raise ValueError("FIELD_ENCRYPTION_KEY is not set")
        self.cipher = Fernet(key.encode())

    def encrypt(self, data: dict) -> str:
        json_data = json.dumps(data)
        encrypted = self.cipher.encrypt(json_data.encode())
        return encrypted.decode()

    def decrypt(self, encrypted_data: str) -> dict:
        decrypted = self.cipher.decrypt(encrypted_data.encode())
        return json.loads(decrypted.decode())


encryption_service = EncryptionService()