ich beschäftige mich momentan mit den verschiedenen Bausteinen, die nötig sind um ein kleines Spiel in Java zu programmieren.
Angenommen wir haben ein Objekt "Spielfigur" mit z.B. der Eigenschaft "Erfahrung".
Dieses Objekt wird serialisiert wenn das Spiel beendet wird und wieder deserialisiert wenn das Spiel gestartet wird.
Das habe ich schon ausprobiert und funktioniert super.
Jetzt wird dabei ja aber eine Datei "spielfigur.ser" im Filesystem erzeugt. Frage: Lässt sich hier der Erfahrungswert manipulieren - ist also so ein Cheaten möglich?
Ich hab die Datei mal in einem Texteditor geöffnet und man sieht teilweise die Strings, sensible Informationen wie Passwörter unverschlüsselt zu speichern scheint also schonmal keine gute Idee zu sein.
Mir geht es aber hier weniger um die Sichtbarkeit von Informationen, der Spieler kann sich seine Erfahrung in der Datei meinetwegen gerne anschauen. Aber kann er sie auch manipulieren?
Habe das gerade versucht aber mein Texteditor sagt mir, die Datei enthält jetzt ungültige Zeichen und geht beim Speichern vermutlich kaputt. Java kann dieses Objekt dann auch nicht mehr laden und wirft mir eine Exception.
Gibt es irgendeine Möglichkeit, dass das doch funktioniert? Habe ich es nur falsch gemacht?
Wie muss ich vorgehen, damit eine Manipulation nicht möglich ist aber der Spielfortschritt auch nicht verloren geht?
Mir geht es aber hier weniger um die Sichtbarkeit von Informationen, der Spieler kann sich seine Erfahrung in der Datei meinetwegen gerne anschauen. Aber kann er sie auch manipulieren?
Habe das gerade versucht aber mein Texteditor sagt mir, die Datei enthält jetzt ungültige Zeichen und geht beim Speichern vermutlich kaputt. Java kann dieses Objekt dann auch nicht mehr laden und wirft mir eine Exception.
Würde mal darauf tippen, dass du die Datei in einer anderen Kodierung geöffnet/gespeichert hast.
Gibt es irgendeine Möglichkeit, dass das doch funktioniert? Habe ich es nur falsch gemacht?
Wie muss ich vorgehen, damit eine Manipulation nicht möglich ist aber der Spielfortschritt auch nicht verloren geht?
Ich dachte da steckt noch ein bisschen mehr dahinter als eine normale Textdatei. Das mit dem Zeichensatz kann sehr gut sein, die beiden die 'gedit' mir vorgeschlagen hat habe ich ausprobiert und beide gingen nicht, aber vermutlich liegt es genau daran.
Dann versuch ich mal rauszufinden, wie ich Objekte verschlüsselt serialisieren kann.
Ich hätte noch die Idee den MD5 Hash beim einlesen des Objekts zu vergleichen, aber den Original MD5 Hash müsste ich ja auch irgendwo ablegen, wo er nicht manipuliert werden kann.
100%ige Sicherheit brauche ich nicht, es ist nur ein "Spaß Projekt" um Java ein bisschen zu lernen.
Falls das Spiel aber wenn's fertig ist doch von zwei oder drei Freunden ausprobiert wird wäre es schön, wenn man nicht durch das simple Editieren einer Textdatei sämtliche Spielmechanismen umgehen könnte. Insbesondere weil ich später eine Online Highscore realisieren möchte.