2009-09-23 11 views
15

私は、起動時にammlplistの情報をバンドルに読み込むアプリケーションを作成しています。 plistの情報は、何日もの作業でまとめられており、配布後に他の人がアプリケーションバンドルから簡単に抽出できないようにしたいと考えています。あなたのアプリバンドルに含まれているxml plistを安全にしたり暗号化したりする方法はありますか?Cocoa/Objective CでXML plistを保護

ご協力いただければ幸いです。

+1

これは微妙な内容ですが、人間が消費しないようにplistを埋め込んでいる場合は、より効率的なバイナリ形式を使用してください。 plutil -convert binary1 file.plistを使用して変換できます。 –

答えて

16

plistには暗号化機能が組み込まれていません。多くの人が圧縮を暗号化として扱います。ここで

は私が何をするのかで、

  1. は、暗号化キーを作成します。
  2. SecKeyEncrypt()を使用してplistをバイナリファイルに暗号化するための小さなプログラムを作成します。
  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

関連する問題