Ich habe eine Cocoa-App entwickelt, die bestimmte Ressourcen (Bilder) enthält, die ich schützen, aber trotzdem anzeigen möchte. Normalerweise würde man diese einfach in den Ressourcen-Ordner stellen, aber das Speichern dort macht es ziemlich einfach zu greifen und zu benutzen. Gibt es eine Möglichkeit, diese Bilder zu verstecken, aber immer noch auf sie innerhalb der App zugreifen?
Einfache Lösung:
Zusammenführen aller Dateien in eine große Datei, optional mit 'salts'.
Rufen Sie dann bestimmte Dateien mit folgendem Inhalt ab:
Dies schützt die Dateien nicht wirklich,
aber verhindert, dass Leute einfach die Ressourcen herausziehen.
Zumindest ist die Datei unbrauchbar, sicherlich mit Salzen.
Eine andere Lösung:
Erstellen Sie NSData-Objekt für jede Ressource.
Fügen Sie alle Objekte zu einem NSMutableArray hinzu.
Konvertieren Sie das Array in ein großes NSData-Objekt.
Schreiben Sie das NSData-Objekt in eine Datei.
Und fügen Sie es dem Ressourcenordner hinzu.
Ihre App kann dann die Datendatei lesen.
Und rufen Sie das Array mit den Ressourcen ab.
Verwenden Sie NSKeyedUnarchiver, um das Array erneut abzurufen.
Damit Sie die Bilder in einer großen Datei schützen können, können Sie die Bilddaten einfach nacheinander an ein Objekt NSData
ablegen.
Wenn Sie möchten, können Sie, wie bereits erwähnt, entweder Salze verwenden, oder Sie können die AES-Verschlüsselungsmethode verwenden, wie in hier .
Dann müssen Sie entweder die Bilddateien strukturell speichern (mit NSArray
oder ähnlich) oder die Bildversätze aufzeichnen, damit Sie die Bilddatenblöcke korrekt abrufen können.
Dies hat einige Nachteile, besonders wenn sich Ihre Bilder im Laufe der Zeit ändern. Auf diese Weise müssen Sie diese Änderungen überwachen und die Datei entsprechend neu strukturieren.
Eine andere Möglichkeit besteht darin, die Bilddateien einfach zu maskieren, indem Sie den Namen / die Erweiterung in eine Ihrer Wahl ändern. Dies wird einige Benutzer von Berührung abhalten.
Schließlich können Sie nach Archivierungs-Frameworks suchen, die zip-ähnliche Funktionen verwenden, und die Bilder dort behalten (wie Blizzard im MPQ-Format verwendet). Dies ist die beste Option (da es Ihnen Verschlüsselungsmethoden bietet und Sie von den Mechanismen der Verschlüsselung und Archivierung abstrahiert), aber es ist nicht einfach, ein solches Framework zu finden.
Warum möchten Sie die Bilder schützen? Es versteht sich von selbst, dass alles, was Sie anzeigen, mit einem Screenshot aufgenommen werden kann. Wenn Sie also versuchen, die Bilder vor der Person zu schützen, die sie anzeigt, ist das nicht besonders wichtig.
Wenn Sie sie weiterhin schützen möchten (z. B. sollten einige Bilder nur für bestimmte Personen verfügbar sein), ist die Verschlüsselung auf Festplatte möglicherweise eine Option. Ich bin kein Objective-C-Typ, aber 1 scheint wie ein guter Ort zu suchen.
Tags und Links objective-c macos cocoa