2009-09-23 1 views
15

Я пишу приложение, которое читает информацию из am xml plist в комплекте при запуске. Информация в plist была скомпилирована в течение многих дней работы, и я хотел бы убедиться, что она не может быть легко извлечена из пакета приложений другой стороной после распространения. Есть ли способ защитить или зашифровать xml plists, который входит в комплект приложения?Закрепление xml plists в Cocoa/Objective C

Любая помощь была бы принята с благодарностью.

+1

Это небольшая деталь, но если вы вставляете plist, который не предназначен для потребления человеком, используйте более эффективный формат бинарного пластика. Вы можете конвертировать с помощью plutil -convert binary1 file.plist. –

ответ

16

В plist нет встроенной функции шифрования. Многие люди рассматривают сжатие как шифрование.

Вот что я хотел бы сделать,

  1. Составляют ключ шифрования.
  2. напишите крошечную программу для шифрования plist в двоичный файл, используя SecKeyEncrypt().
  3. Поместите двоичный файл в комплект.
  4. В приложении, спрячьте ключ где-нибудь. Например, сохраните их как куски, чтобы их было нелегко найти из дампа.
  5. При запуске приложения прочитайте двоичный файл из пакета, расшифруйте его с помощью SecKeyDecrypt() с помощью ключа и сохраните его в памяти.
  6. Скрытый текст является plist и загружает plist из памяти.

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

+0

Спасибо, это очень полезно. – RunLoop

+2

Что касается части шифрования, ознакомьтесь с этим вопросом SO для идей: http://stackoverflow.com/questions/1417893/encrypted-nsdata-to-nsstring-in-obj-c –

+0

@ZZ Coder Есть ли у вас образец пример, чтобы продемонстрировать это? – raaz

Смежные вопросы