2009-09-23 13 views
15

Estoy escribiendo una aplicación que lee información de am xml plist en el paquete al inicio. La información en el plist ha sido compilada a través de muchos días de trabajo y me gustaría asegurarme de que otra parte no pueda extraerla fácilmente del paquete de la aplicación después de la distribución. ¿Hay alguna manera de proteger o cifrar los plists xml que uno incluye dentro de su paquete de aplicaciones?Asegurando xml plists en Cocoa/Objectivo C

Cualquier ayuda sería muy apreciada por favor.

+1

Es un detalle menor, pero si está incorporando un plist que no está destinado al consumo humano, utilice el formato plist binario más eficiente. Puede convertir con plutil -convertir binary1 file.plist. –

Respuesta

16

No hay una función de encriptación incorporada en plist. Mucha gente trata la compresión como encriptación.

Esto es lo que yo haría,

  1. constituyen una clave de cifrado.
  2. escribe un pequeño programa para encriptar el plist en un archivo binario usando SecKeyEncrypt().
  3. Coloque el archivo binario en el paquete.
  4. En la aplicación, oculte la clave en algún lugar. Por ejemplo, guárdelos como piezas, por lo que no es fácil encontrarlos en un basurero.
  5. Al iniciar la aplicación, lea el archivo binario del paquete, descifrelo usando SecKeyDecrypt() usando la clave y almacene el texto sin formato en la memoria.
  6. El texto claro es el plist y carga el plist de la memoria.

Esto todavía se considera ofuscante porque la clave está disponible en su paquete, pero será lo suficientemente difícil como para disuadir a la mayoría de los hackers ocasionales.

+0

Gracias, eso es muy útil. – RunLoop

+2

En cuanto a la parte de cifrado, consulte esta pregunta de SO para obtener ideas: http://stackoverflow.com/questions/1417893/encrypted-nsdata-to-nsnstring-in-obj-c –

+0

@ZZ Coder ¿Tiene alguna muestra? ejemplo para demostrar esto? – raaz