2009-09-23 9 views
15

Piszę aplikację, która podczas uruchamiania pobiera informacje z paczki am xml w pakiecie. Informacje w pliku plist zostały skompilowane podczas wielu dni pracy i chciałbym, aby nie można było go łatwo wyodrębnić z pakietu aplikacji przez inną stronę po dystrybucji. Czy istnieje sposób na zabezpieczenie lub zaszyfrowanie plistów xml zawartych w pakiecie aplikacji?Zabezpieczanie plistów xml w Cocoa/Objective C

Każda pomoc będzie mile widziana.

+1

To drobny szczegół, ale jeśli osadzasz plik plist, który nie jest przeznaczony do spożycia przez ludzi, użyj bardziej wydajnego formatu plist binarnego. Możesz konwertować za pomocą plutil -convert binary1 file.plist. –

Odpowiedz

16

Nie ma wbudowanej funkcji szyfrowania w plist. Wiele osób traktuje kompresję jako szyfrowanie.

Oto, co bym zrobił,

  1. Makijaż klucza szyfrowania.
  2. napisać mały program do zaszyfrowania pliku plist w pliku binarnym za pomocą SecKeyEncrypt().
  3. Umieść plik binarny w pakiecie.
  4. W aplikacji ukryj gdzieś klucz. Na przykład przechowuj je w kawałkach, więc nie jest łatwo je znaleźć.
  5. Po uruchomieniu aplikacji przeczytaj plik binarny z pakietu, odszyfruj go za pomocą klawisza SecKeyDecrypt() i zapisz tekst w pamięci.
  6. Najprostszym tekstem jest plik plist i ładowanie plist z pamięci.

To nadal jest uważane za zaciemnianie, ponieważ klucz jest dostępny w pakiecie, ale będzie to wystarczająco trudne, aby powstrzymać większość zwykłych hakerów.

+0

Dziękuję, to bardzo pomocne. – RunLoop

+2

Jeśli chodzi o część szyfrowania, sprawdź to pytanie dotyczące pomysłów na SO: http://stackoverflow.com/questions/1417893/encrypted-nsdata-to-nsstring-in-obj-c –

+0

@ZZ Coder Czy masz jakąkolwiek próbkę przykład, aby to pokazać? – raaz