Verschlüsseln von *.txt-Dateien

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Paul

Betreff: Verschlüsseln von *.txt-Dateien

BeitragSo, Mai 16, 2004 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Tag zusammen.
Für mein Spiel muss ich Datein in Dateien Speichern. Nun will ich natürlich nich, dass jeder in die level.txt Datei 14 eingibt und schon ist er im 14. Level. Wie kann ich den Spaß möglichst einfach verschlüsseln?

Paul
Stratocaster black - Roland MicroCube
User posted image
Girgl-World, wer's nich kennt, is' blöd!

Hubsi

BeitragSo, Mai 16, 2004 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab das noch nie gemacht, aber sollte so gehen:
Code: [AUSKLAPPEN]
SeedRnd 1000

For ...
wert=wert Xor Rand(0,5000)
; wert speichern
Next
Sollte ziemlich sicher sein.

P.S.: Was ist eigentlich mit Girgl World? War schon lange nicht mehr im Projekte-Forum. Gibts schon was neues?
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Timo

BeitragSo, Mai 16, 2004 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm...
diese Verschlüsselung ist zwar nicht die beste, aber eine schnelle:

Verschlüsselung = 255 - ZuVerschlüsselndesByte

das geht dann nämlich genauso wieder andersherum:

ZuVerschlüsselndesByte = 255 - Verschlüsselung

Das ganze einfach für jedes Byte, was in der Textdatei drinne ist durchrattern, fertig! Very Happy

Mr.Keks

BeitragSo, Mai 16, 2004 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
also wenn deine levels nicht die 255 übersteigen, kannst du die levelnummer auch einfach mit writebyte speichern Very Happy
... oder halt writeshort/writeint

ansonsten ist xor wirklich das einfachste.

Code: [AUSKLAPPEN]
repeat
writebyte file2,readbyte(file1) xor "g"
until eof(file1)


Zitat:
wert=wert Xor Rand(0,5000)
clever, und wie findest du die rands beim entschlüsseln wieder raus?
MrKeks.net

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Mai 16, 2004 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
clever, und wie findest du die rands beim entschlüsseln wieder raus?


mit seedrnd sollte es gehen ODER?
Testet das mal ob es überall geht!Code: [AUSKLAPPEN]
SeedRnd (1000)
For t= 0 To 1000
x= x + Rand(50000)
Next
Print x
If  x - 25069750
   Print "keine gute Idee!!"
Else
   Print "es geht!!"
End If
WaitKey
[BB2D | BB3D | BB+]

TheShadow

Moderator

BeitragSo, Mai 16, 2004 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Rand würde ich nicht nehmen - wer weiß ob es immer gleich ist oder gleich bleibt...

man könnte festplatten-nummer von C: auslesen und das als schlüssel benutzen... Nur so darf man natürlich nur Daten auf einem PC haben - Übertragen von PC1 auf PC2 geht dann nicht...

Ich benutze MD5-Fingerprint - damit erstelle ich aus einem kurzen String einen 2048 bit langen sehr kryptischen schlüssel und XORe dann alle Daten. Normalerweise muß man nachdem man einen block verschlüsselt hat, den dann wieder als schlüssel nehmen und nächsten block damit verschlüsseln usw... (ist etwas sicherer, ich lasse das aber)
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

René Meyer

BeitragSo, Mai 16, 2004 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Relativ einfach und sicher:

Du speicherst 200 Zufallsbytes ab.

Danach den aktuellen Level XOR 47

Danach noch einmal 200 Zufallsbytes.
www.blitzbasic.de | Das Buch zu Blitz Basic: www.schreibfabrik.de/txt/bbb

Ctuchik

BeitragSo, Mai 16, 2004 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder das hier:
z.B. in Level 25
Level speichern per: SaveLevel(25)
Level lesen per: level = ReadLevel() <--- gibt dann 25 zurück

Code: [AUSKLAPPEN]

EDIT: Verbesserte Version untendran!
  • Zuletzt bearbeitet von Ctuchik am So, Mai 16, 2004 20:02, insgesamt einmal bearbeitet

Ctuchik

BeitragSo, Mai 16, 2004 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Achtung! Neue und verbesserte Version:
Code: [AUSKLAPPEN]

Function SaveLevel(level%)

  Local save$ = WriteFile("save.dat")
  Local summe% = 0

  For a=0 To Rand(100,200)
    zahl% = Rand(0,255)
    summe% = summe% + zahl%
    WriteByte save$, zahl%
  Next

  neuesumme% = (summe% + level%) Mod 256
  WriteByte save$, ((summe% + neuesumme%) Mod 222)
  WriteByte save$, neuesumme%

  CloseFile(save$)

End Function

Function ReadLevel()

  Local save$ = ReadFile("save.dat")
  Local summe% = 0
  Local zahl% = ReadByte(save$)

  While True
    nextzahl% = ReadByte(save$)
    If Not(Eof(save$))
      summe% = summe% + zahl%
      zahl% = nextzahl%
    Else
      Exit
    End If
  Wend

  neuesumme% = summe% Mod 256
  If nextzahl% > neuesumme%
    level% = nextzahl% - neuesumme%
  Else
    level% = nextzahl% - neuesumme% + 256
  End If
  If zahl% <> ((summe% + nextzahl%) Mod 222) Then RuntimeError("Error: Save-Datei fehlerhaft! Wohl versucht zu cheaten, was? ;)")

  CloseFile(save$)
  Return level%

End Function

Paul

BeitragSo, Mai 16, 2004 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
huiii, dankeschön für die Mühen Ctuchik!!!

Paul
Stratocaster black - Roland MicroCube
User posted image
Girgl-World, wer's nich kennt, is' blöd!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group