Frage

Was ist der beste Weg, um Daten zwischen Programm läuft in Java zu speichern? Ich weiß schon, dass Sie eine Textdatei verwenden können, und speichern die Informationen, die Art und Weise, aber ich habe mich gefragt, ob es ein besserer Weg, um die Informationen zu speichern, die durch das Programm zwischen den Durchläufen des Programms erzeugt wird.

Auch ist es eine Möglichkeit, es zu tun, um die Daten sicher? Insbesondere möchte ich in der Lage, den Endverbraucher zu halten, darauf zuzugreifen.

War es hilfreich?

Lösung

  

Ich habe mich gefragt, ob es eine Möglichkeit war   andere Informationen, die Platzierung ist   durch das Programm zwischen den Läufen genereated   des Programms?

Sie einfach einen ObjectOutputStream verwenden, um es in eine Datei zu serialisiert und einem ObjectInputStream ihn zurückzubekommen.

  

Auch ist es eine Möglichkeit, es zu tun, um   zu halten, die Informationen sicher? von   in der Lage, es dem Endbenutzer zugreifen?

Wenn der Code läuft auf dem System des Endbenutzers dann nicht, gibt es keine Möglichkeit, sie zu verhindern, dass die Daten zu erhalten - es ist nicht einmal wert Ihre Zeit versuchen, es irgendwie zu kodieren, da es einfach ist, einen Debugger zu befestigen und das Programm des inspizieren Zustand, während es läuft. Als ein binäres Format, wird Java Serialisierung verhindert nicht-technischen Anwender von Entzifferung es, und das ist so ziemlich das Beste, was Sie hoffen können.

Andere Tipps

Ich habe es mir nie, aber ich denke, das ist, was das JDK java.util.prefs.Preferences wurde ursprünglich entwickelt wurde.

Sie können mit Eigenschaften Speichern von Informationen. Wenn Sie wollen, dass es sicher zu machen, führen Sie es durch eine Art Verschlüsselungsstrom .

Cryptography auf Dateien oder lokale Datenbank mit Passwort.

könnten Sie db4o die Daten zu speichern. Es ist eine Objektdatenbank und unterstützt die Verschlüsselung.

Sie können in Quick'n'Dirty Persistenz für Java interessiert sein.

vorgeschlagen Einige Leute Serialisierung zu verwenden. Hüten Sie sich vor, dass es eine Reihe von Nachteilen auf Serialisierung.

  • Die Versionierung Problem. Wenn Sie etwas in den Klassen ändern, die serialisiert werden, dann serialisierten Dateien mit der alten Version des Programms geschrieben wird, kann nicht ohne weiteres mehr gelesen werden.
  • Sie wissen nicht, die genaue Dateiformat. Es wird wirklich schwer, wenn Sie später ein anderes Programm schreiben wollen, möglicherweise in einer anderen Programmiersprache, die die Datei lesen muss.

Serialisierung ist nicht gut geeignet für die Langzeitlagerung.

Ich würde vorschlagen, stattdessen eine kleine, eingebettete Datenbank verwenden. (Eine eingebettete Datenbank ist eine Datenbank, die als Ihr Programm im gleichen Prozess ausgeführt wird). Beachten Sie, dass Sun Java enthält Java DB , die eine Version von Apache Derby ist. Es gibt auch HSQLDB , das ist eine andere kleine und reine Java-Datenbank, die als eingebettete Datenbank verwendet werden kann.

Das Beste, was zu verwenden, wenn Java Anfang ist einen Object oder eine Textdatei zu verwenden. Sobald Sie mehr Erfahrung haben, dann können Sie Datenbanken verwenden.

Wie wäre es Serialisierung?

Es kann nicht vom Benutzer gelesen werden, und es ist relativ einfach.

Wie schon andere gesagt haben, gibt es eine Vielzahl von Möglichkeiten, um Daten zu serialisieren. Sie können etwas leicht wie SQLite oder einfach Serialisierung verwenden. nur erkennen, dass alle Versuche, Sie machen die Daten verschlüsseln können besiegt werden, vor allem im Fall von Java-Code, da es leicht rückgängig gemacht werden kann.

Wenn jedoch die Masse der Benutzer nicht ausreichend technisch ist die Komplexität des Reverse Engineering ein Java-Programms zu verstehen, um herauszufinden, wie Sie Ihre Daten zu entschlüsseln, sollten Sie in der Lage sein, mit einigen grundlegenden Verschlüsselungsmethoden, um weg wie das, was erwähnt wurde in einer anderen Antwort und gut sein. nur erkennen, dass zu jeder Zeit alles auf einer Maschine wohnt man nicht kontrollieren, gibt es keinen Weg, um die hartnäckigsten Benutzer, um zu verhindern, herauszufinden, wie es zu knacken.

Ich persönlich würde vorschlagen, SQLite und einige einfache Verschlüsselung auf dem Daten mit Ihnen in den Bereichen setzen also wenn jemand intelligent genug, um in der Lage sein, auf die lokale DB-Datei zu verbinden, sie müssen immer noch Ihre Krypto-Algorithmus in irgendeiner Weise umkehren . 99,9% der regelmäßigen Nutzer wird nicht mit dieser Ebene der Untersuchung stören.

XML als Serialisierungstechnik ist weniger anfällig für zukünftige Änderungen in Ihrem Programm, das die Speicherung als binäre Formate wie Objektserialisierung anpassen. Doch das wäre es sehr gut lesbar und veränderbar von den meisten Benutzern machen.

Eine sehr einfache Kompression / Dekompression würde fast alle Benutzer hält an dem tatsächlichen Inhalt der Daten aus bekommen. Die Verwendung von GZipInputStream / GZipOutputStream um den aktuellen Schreibstrom wird die Arbeit machen. Je aufwendiger Ihre Verteidigung vor neugierigen Sie desto mehr bekommen sie die Nutzer Ihrer Software auswirken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top