2009-07-17 11 views
0

Ich schließe eine Plist-Datei in meine iPhone App ein. Es ist im Binärformat (mit plutil von Xml in Binär konvertieren). Ich möchte zur Laufzeit eine MD5-Prüfsumme (oder SHA-1) darauf ausführen, um zu bestätigen, dass der Inhalt erwartungsgemäß ist. Leider bekomme ich immer eine Prüfsumme, die anders ist als ursprünglich. Nach über einer Stunde Annahme, dass ich die MD5-Summe falsch berechnet habe, entschied ich mich, einen Test durchzuführen und zu bestätigen, dass die Bytes tatsächlich gleich sind. Sie sind nicht. Die Dateigröße bleibt gleich, aber beginnend mit Byte 30 und in der gesamten Datei (mit Ausnahme der letzten 32 Byte) ist der Inhalt der Datei völlig unterschiedlich. Weiß jemand, ob Eigenschaftslistendateien signiert oder anderweitig in ein anderes Binärformat "kompiliert" sind, bevor sie in eine iPhone App aufgenommen werden? Wenn ja, können Sie weitere Einzelheiten zum Prozess angeben?plist (Eigenschaftsliste) Datei md5sum ändert sich, wenn in iPhone App kompiliert

Vielen Dank im Voraus!

Antwort

1

Standardmäßig verwendet Xcode nicht nur eine direkte Kopie, sondern verwendet ein kleines Skript, um Plist-Dateien zu verarbeiten und zu kopieren wenn ein Ziel gebaut wird. Wenn Sie das Informationsfenster für Ihr Ziel in Xcode aufrufen und die Registerkarte "Regeln" auswählen, sehen Sie, dass zur Verarbeitung von text.plist-Quelldateien ein eigenes Tool namens CopyPlistFile verwendet wird. Es führt einige grundlegende Überprüfungen durch, um sicherzustellen, dass der plist gültig ist, und kann optional in ein anderes Format konvertiert werden, obwohl anscheinend keine Konvertierung standardmäßig ausgeführt wird.

Ich weiß nicht, ob dies eine Änderung in Ihrer PLIST-Datei verursacht, aber wenn Sie möchten, können Sie Informationen über die PLIST-Datei selbst in Ihrem Projekt abrufen und den Dateityp von "text.plist" in "just" ändern "Text". Das sollte Xcode dazu bringen, es als reine Textdatei und nicht als Eigenschaftslistendatei zu behandeln und nur eine direkte Kopie zu erstellen, anstatt es durch das CopyPlistFile-Tool auszuführen.

+0

Das war sehr hilfreich. Danke für den Tipp. Ich hatte zu einer binären Eigenschaftenliste (über plutil) gewechselt, aber es hatte immer noch eine Art von text.plist.xml in Xcode. Wenn man sich umsah, sah es aus, als wäre die nächste logische Wahl file.bplist. Ich bin dazu gewechselt und meine Datei wird nicht mehr verändert. Seltsam (oder nicht), bevor es geändert wurde, blieb es im Binärformat und hatte immer noch den richtigen Inhalt, nur mit einer anderen MD5-Prüfsumme. – Aaron

0

Ich werde den warum Stapel auf diese Frage pop. Ich kenne die Antwort auf Ihre Frage nicht, aber ich bin neugierig, warum Sie Zeit damit verbringen.

Da Apps digital signiert sind, warum machen Sie sich Sorgen über die Integrität des PList? Wenn jemand es änderte, würde die App nicht installieren, weil die digitale Signatur nicht mehr gültig wäre.

Der andere Grund könnte sein, dass Sie besorgt sind, dass die App gehackt wird. Absolut vernünftig, aber wenn jemand die App hacken kann, dann kann er auch den PList ändern und die Prüfsumme in deinem Code ändern, so dass er noch läuft. Es gibt wirklich keine Möglichkeit, die Integrität Ihrer Inhalte zu garantieren, ohne sie von Dritten (z. B. Ihrem eigenen Server) zu erhalten.

+0

Das ist eine sehr legitime Frage. Der Grund für die MD5-Summe ist, dass ich sie an meinen Server sende, um zu sehen, ob Updates für die Eigenschaftslistendatei verfügbar sind. Wenn die Summe dem entspricht, was auf dem Server ist, behält sie, was sie hat. Wenn dies nicht der Fall ist, sendet der Server die neue Kopie, und die Summe wird verwendet, um zu bestätigen, dass die gesamte Datei korrekt empfangen wurde. Ich mache mir also keine Gedanken darüber, ob jemand etwas ändert, sondern nur als Grundlage für Updates. Da die Version, die ich bündeln wollte, nicht die Version war, die in der App endete, führte das zu der anfänglichen Verwirrung meinerseits. – Aaron

+1

Dies ist genau die Funktion, die ich herausfinden möchte. Ich wünschte, du hättest einen Code hinterlassen, wie man den md5 in eine Datei bringt. –

Verwandte Themen