Скрытие (или шифрование) ресурсов приложения? - PullRequest
8 голосов
/ 21 февраля 2011

Я разрабатываю приложение Какао, которое имеет определенные ресурсы (изображения), которые я хочу защитить, но все же отображать. Обычно их просто помещают в папку ресурсов, но их хранение значительно упрощает их захват и использование. Есть ли способ сохранить эти изображения скрытыми, но при этом получить к ним доступ в приложении?

Ответы [ 3 ]

9 голосов
/ 21 февраля 2011

Простое решение:

Объедините все файлы в один большой файл данных, опционально используя «соли».
Затем извлеките определенные файлы с помощью чего-то вроде этого:

NSData *dataFile = [NSData dataWithContentsOfFile:filePath];  
NSData *theFile = [dataFile subdataWithRange: NSMakeRange(startPos,endPos)];

Это на самом деле не защищает файлы,
, но мешает людям просто перетаскивать ресурсы.
По крайней мере, файл данных непригоден для использования, конечно, с солями.

Другое решение:

Создание объекта NSData для каждого ресурса.
Добавление всех объектов в NSMutableArray.
Преобразование массива в один большой объект NSData.
Запись объекта NSData вфайл.
И добавьте его в папку ресурсов.

После этого ваше приложение сможет прочитать файл данных.
И получить массив с ресурсами.

// Convert array to data
NSData* data=[NSKeyedArchiver archivedDataWithRootObject:theArray];

Используйте NSKeyedUnarchiver для повторного получения массива.

3 голосов
/ 21 февраля 2011

Чтобы защитить изображения в одном большом файле, вы можете просто последовательно выгружать данные изображения в объект NSData.

Если хотите, вы можете использовать любую соль, как упоминалось ранее.или вы можете использовать метод шифрования AES, как показано здесь .

Затем вам придется либо сохранить файлы изображений структурно (используя NSArray или аналогичный), либо записать изображениесмещения, чтобы вы могли правильно извлечь блоки данных изображения.

Это имеет некоторые недостатки, особенно если ваши изображения меняются со временем.Таким образом, вам придется следить за этими изменениями и соответствующим образом реструктурировать файл.

С другой стороны, вы можете просто замаскировать файлы изображений, изменив имя / расширение на один из ваших вариантов.Это избавит некоторых пользователей от прикосновения.

Наконец, вы можете искать некоторые каркасы архивирования, используя zip-подобные функции, и сохранять изображения там (как Blizzard использует в своем формате MPQ).Это будет наилучшим вариантом (поскольку он предоставляет вам методы шифрования и абстрагирует вас от механизмов шифрования и архивирования), но найти такую ​​структуру может быть нелегко.

0 голосов
/ 21 февраля 2011

Почему вы хотите защитить изображения?Само собой разумеется, что все, что вы отображаете, может быть записано со скриншотом, поэтому, если вы пытаетесь защитить изображения от человека, который их просматривает, это не имеет особого смысла.их (скажем, некоторые изображения должны быть доступны только определенным людям), шифрование их на диске может быть вариантом.Я не парень из Objective-C, но это 1 кажется хорошим местом для поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...