Django - Шифрование всего экземпляра модла

В настоящее время я выясняю, как лучше всего зашифровать экземпляр модели в Django.

Зашифровать отдельные поля кажется простым, но я хотел бы зашифровать целый инстанс.

Контекст

В настоящее время я создаю приложение для ведения заметок, которое должно иметь возможность опционально шифровать заметку с помощью заданного пароля.

Модель выглядит примерно так:

class Note(models.Model):
    title = CharField()
    content = TextField()
    created_at = DateTimeField()
    edited_at = DateTimeField()

Хотя я мог бы просто зашифровать только title и content, я не хочу этого, чтобы не сообщать никакой информации о заметке, когда она зашифрована. Так что в основном все поля (события created_at и edited_at) должны быть зашифрованы.

Мысли

Я подумал о добавлении второй модели EncryptedNote, которая содержит только поле encrypted_data. Это поле содержит данные в формате JSON в зашифрованном виде. Когда приложению нужно будет загрузить экземпляр, оно расшифрует содержимое и создаст экземпляр Note на основе данных JSON.

Однако при использовании SQL-подобной базы данных вручную сохранять JSON кажется немного неправильным.

Вопрос

Есть ли уже хороший (и безопасный) способ зашифровать экземпляр или идея вручную зашифровать и расшифровать данные с помощью JSON является хорошим подходом?

Вернуться на верх