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 является хорошим подходом?