Зашифровать NSDocument на macOS

Есть ли в любом случае можно переопределить NSPersistentDocument для шифрования и требуется пароль для открытия файла? Другими словами, возможно ли зашифровать документ целиком с помощью предоставленного пользователем пароля? Я рассмотрел решения, и кажется, что единственный способ - это фактически зашифровать сами данные CoreData, однако это сделает невозможным использование NSPredicate для фильтрации NSFetchRequest, поскольку данные будут зашифрованы. Альтернативой может быть использование Realm, у которого есть ключ шифрования, но который только шифрует данные Realm, оставляя все остальные данные в документе незашифрованными.

2 ответа

Вы можете зашифровать объекты CoreData, и создавая временные (только в памяти) поля открытого текста при чтении, вы можете использовать NSPredicate для фильтрации NSFetchRequest по этим полям открытого текста. Смотрите здесь для примера кода шифрования / дешифрования: https://github.com/michaelrourke/EncryptedCoreData

Посмотрите на документ для NSPersistentStore и его два абстрактных подкласса, NSAtomicStore а также NSIncrementalStore, Если вы сделаете пользовательский подкласс одного из них, вы можете настроить серверную часть, в которую записываются базовые данные.

Другие вопросы по тегам