Datei verschließen > Highscore

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Kosmo
Beiträge: 15
Registriert: Di 23. Nov 2010, 18:06

Datei verschließen > Highscore

Beitrag von Kosmo »

Sehr geehrte Leserinnen und Leser,

also ich habe folgende Frage, auf die ich bis jetzt keine Lösung gefunden habe. Also ich habe ein kleines Spiel programmiert, bei dem man halt mit einem Auto bei Hindernissen vorbei kommen muss... Wenn man an ein solches Hindernis stoßt wird halt der Timer angehalten, und die Daten in die .txt-Datei eingetragen und der Highscore wird aktualisiert. Nun habe ich das Problem, dass man die TXT-Datei natürlich öffnen kann und Daten ändern, die dann ein falsches Ergebnis repräsentieren. Nun wollte ich gerne wissen, wie ich das lösen könnte, ohne gleich den ganzen Text mit einer Methode zu verschlüsseln. Ich hoffe mir kann wer helfen.

Mit freundlichen Grüßen
Kosmo

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Datei verschließen > Highscore

Beitrag von MAC »

verschlüsseln,

einfache methode:
Du estelst irgendwie beim speichern ein Hash wert.

hab gerade keine Zeit..

Code: Alles auswählen

Signatur := nil;

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Datei verschließen > Highscore

Beitrag von af0815 »

Wenn du nicht vrschlüsseln willst, dann tarnen und täuschen.

Schreibe mehre Werte nicht als Text sondern binär und lege dann eine Prüfsumme darüber. wenn ein Wert geändert wird, stimmt die Prüfsume nicht mehr und es ist klar as da wer gefummelt hat.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Datei verschließen > Highscore

Beitrag von Live »

Verschlüsselte Hexcodes sind meistens der Standard für kleinere Spiele. Es gibt aber recht viele Möglichkeiten, deine Spielstände zu verschlüsseln bzw. den Inhalt darin. Hash wäre z.B. eine, da würde sich SHA-1 oder md5 anbieten.

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Datei verschließen > Highscore

Beitrag von Euklid »

Ich kenne mich mit dem Speichern von Dateien nicht sonderlich aus. Es gibt aber meines Wissens die Methode, den Score als FileStream o.ä. zu speichern - d.h. die Zieldatei ist nicht mehr lesbar, wenn man sie mit einem Editor öffnet.

Viele Grüße, Euklid

Kosmo
Beiträge: 15
Registriert: Di 23. Nov 2010, 18:06

Re: Datei verschließen > Highscore

Beitrag von Kosmo »

Danke für die Infos, doch leider kann ich damit noch nicht so viel anfangen, da ich noch nicht so viel Erfahrung mit Kryptographie gesammelt habe.
Wäre wirklich nett, wenn mir das wer genauer erläutern könnte :)

Also bedanke mich schonmal.


Mit freundlichen Grüßen
Kosmo

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Datei verschließen > Highscore

Beitrag von Live »

Kosmo hat geschrieben:Danke für die Infos, doch leider kann ich damit noch nicht so viel anfangen, da ich noch nicht so viel Erfahrung mit Kryptographie gesammelt habe.
Wäre wirklich nett, wenn mir das wer genauer erläutern könnte :)

Also bedanke mich schonmal.


Mit freundlichen Grüßen
Kosmo
Es gibt im Bereich verschiedene Verschlüsselungsmethoden z.B. Vignere oder Caesar. Am besten schaust du da mal bei Wikipedia oder Google. Es gibt im Bereich der Kryptographie aber auch so genannte Prüfsummen. Diese Prüfsummen ändern sich jedes mal, wenn eine Datei geändert wird. Es gibt verschiedene Algorithmen, die diese Prüfsummen erstellen. Dazu zählen zum Beispiel der MD5 oder SHA-1 Algorithmus. Wenn du die verschiedenen Algorithmen vergleichen willst,schaust du ebenfalls besser bei Google.

Was binär oder hexadezimal Zahlen sind, brauche ich ja denke ich mal nicht zu erläutern.

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Datei verschließen > Highscore

Beitrag von carli »

Eine einfache Methode, die ziemlich einfach geht:

Code: Alles auswählen

uses md5;
 
const geheimwort = 'Doof'; // dieses Geheimwort muss der Angreifer wissen, falls er das knacken will
      falschtext = 'DU HAST GECHEATET'; // Dieser Text wird eingesetzt, falls jemand gecheatet hat
 
function BerechneSpeicherString(eingabe: string): string; // hängt die Prüfsumme an
begin
 result:=eingabe+'####'+md5print(md5sum(eingabe+geheimwort));
end;
 
function LeseSpeicherString(eingabe: string): string; // Prüft die Daten, ob was geändert wurde
var xpos: integer;
begin
 xpos:=pos('####', eingabe); // Position des Trenners
 result:=copy(eingabe, 1, xpos-1); // die Daten extrahieren
 if md5print(md5sum(result+geheimwort))<>copy(eingabe, xpos+4, 100000) then result:=FalschText; // testen, ob die Prüfsumme gleich bleibt
end;
Jetzt packst du deine Highscore in einen String und speicherst das Ergebnis von BerechneSpeicherString ab.
Beim Einlesen bekommst du die Daten zurück, indem du die eingelesene Datei an LeseSpeicherString übergibst und das Ergebnis benutzt.

Antworten