Binäre Dateien / Verschlüsselung



  • Hallo,

    ich habe folgendes Problem:

    Ich brauche (im Zusammenhang mit einem Spiel) verschiedene Dateien, die (außerhalb des Spiels) möglichst unverändert bleiben sollen (z.B. Profil-Daten, Texte (verschiedene Sprachen), ...).

    So sollen bspw. Textinformationen oder andere Sachen aus diesen Dateien geladen (und ggf. gespeichert) werden. Nun stellt sich die Frage, wie ich das sinnvoll anstelle, ohne das die Dateien von späteren Usern problemlos geändert werden können (wie bei einfachen *.txt-Dateien).

    Ich hab da an Binärdateien gedacht, allerdings werden (mit meinem Beispiel) keine Textelemente so wie ich es gerne hätte "verschlüsselt":

    #include <fstream>
    
    #define MAX 10
    
    struct Demo
    {
    	int wert;
    	char text[30];
    
    } strukt[MAX];
    
    int main()
    {
    	for( int l = 0; l < MAX; l++)
    	{
    		strukt[l].wert = l;
    		sprintf( strukt[l].text, "%d. Strukturvariable", l);
    	}
    
    	fstream datei;
    	datei.open( "Datei.dat", ios_base::out); //binary hab ich auch versucht
    	datei.write( (char*)strukt, sizeof( struct Demo)*MAX );
    	datei.close();
    
    	return 0;
    }
    

    Ergibt dann sowas (Datei.dat):

    0. Strukturvariable                1. Strukturvariable                2. Strukturvariable            ...
    

    Wie kann ich Text in binäre Zeichen umwandeln (und umgekehrt)? 😕
    Habt ihr Ideen für (einfache) Verschlüsselungen oder andere Alternativen?

    Ich hoffe ihr versteht was ich meine und könt mir helfen?!

    Hinweis: Diesen Artikel habe ich gefunden, entspricht aber nicht ganz meinen Vorstellungen. 😞

    Ciao,
    kleinweich



  • Es ist die Muehe nicht wert. Selbst die "Grossen" verzichten drauf.



  • Das Speichern in Binärform ist normal und hindert auch niemanden daran, weiterhin die Werte in deiner Datei nach Belieben zu verändern, sofern keine Verschlüsselung erfolgt. Dafür könntest du einfach einen Pseudozufallsgenerator verwenden und den Seed und eine Prüfsumme ans Ende oder an den Anfang der Datei schreiben.
    Es gibt auch bessere Methoden, aber dir muss klar sein, dass das alles keinen vollständigen Schutz bietet, egal wie kompliziert dein Zufallszahlengenerator oder dein Prüfsummenalgorithmus ist.
    Wenn dein Spiel es entschlüsseln kann, dann kann es jeder, sofern der Algorithmus bekannt ist (und den kann jeder mit mehr oder weniger Arbeitsaufwand herausfinden, sofern er dein Spiel vorliegen hat). Und selbst so eine Methode schützt alleine auch nicht gegen das Sichern der Dateien und dem Wiederherstellen selbiger, wenn es ungünstig für den Spieler steht.



  • Danke erstmal für die Antworten!

    Es ist die Muehe nicht wert. Selbst die "Grossen" verzichten drauf.

    Nun ja, die Dateien von den "Grossen" sehen (zuminest auf den ersten Blick) doch sehr kryptisch aus, sodass sich da kaum ein unversierter Gamer dabei machen würde.

    Es gibt auch bessere Methoden, aber dir muss klar sein, dass das alles keinen vollständigen Schutz bietet, egal wie kompliziert dein Zufallszahlengenerator oder dein Prüfsummenalgorithmus ist.

    Ja klar, nach vollständigen Schutz hab ich auch nicht gesucht! :p

    Dafür könntest du einfach einen Pseudozufallsgenerator verwenden und den Seed und eine Prüfsumme ans Ende oder an den Anfang der Datei schreiben.

    Das hab ich mir auch überlegt, werde ich wohl auch machen. Außerdem werde ich wohl unsinnigen kryptischen Code hinzufügen, damit das ganze nicht mehr so leicht durchschaubar ist.


Anmelden zum Antworten