Autor |
Beitrag |
Fabian E.
      
Beiträge: 554
Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
|
Verfasst: Mi 26.03.08 14:25
Hallo zusammen,
ich möchte bei einem aktuellen projekt eine ini-datei verschlüsselt speichern.
jetzt frage ich mich wie ich das am besten realisieren soll.
die datei laden und entschlüsseln um sie dann zwischenzuspeichern und n TIniFile zu laden ist ungünstig, da ja während der laufzeit die ini unverschlüsselt vorliegt.
hat jemand eine idee wie das gehen könnte? muss auch keine super verschlüsselung sein, soll nur davon abhalten darin herumzuschnüffeln.
gruß
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mi 26.03.08 14:34
Beim Laden: inidatei in einen stream laden (fall es geht), stream mit Xor entschlüsseln, Stream in TIni laden.
beim speichern: TIni in einen Stream, Xor verschlüsseln, Stream speichern.
müsste doch eigentlich so funktionieren oder??
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
ub60
      
Beiträge: 764
Erhaltene Danke: 127
|
Verfasst: Mi 26.03.08 16:15
Du musst doch nicht die komplette Datei verschlüsseln. Arbeite mit der Ini-Datei wie bisher, aber verschlüssle die Werte vor dem Abspeichern bzw. entschlüssle sie nach dem Einlesen. Dann kannst Du mit der Ini-Datei (fast) arbeiten wie gehabt.
ub60
|
|
Fabian E. 
      
Beiträge: 554
Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
|
Verfasst: Mi 26.03.08 19:41
also im prinzip nur entschlüsseln wenn ein wert abgefragt wird?
ich denke wenn ich es so mache, was irgendwie sinnvoller wäre, würde ich dann auch nur gewisse teile verschlüsseln, nämlich die, die wichtig sind.
gruß
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mi 26.03.08 20:19
Hm, als Stichwort könnte vllt auch noch TMemIniFile mit TMemoryStream dienen... auch wenn dann wieder die Daten längere Zeit unverschlüsselt im RAM liegen.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
.#R4id
      
Beiträge: 90
Windows XP Prof.
CodeGear Delphi 2007
|
Verfasst: Mi 26.03.08 20:28
Ich habs immer so verschlüsselt » Delphi-Treff :: Algorithmen
_________________ Delphi-Quelltext 1:
| if CopyAndPaste not avaible then Developer := Helpless; |
|
|
Sirke
      
Beiträge: 208
Erhaltene Danke: 2
|
Verfasst: Mi 26.03.08 22:30
Wenn es dir nur ums herumschnüffeln geht, dann denke ich ist es einfacher nur die Werte die in die INI geschrieben werden zu verschlüsseln. Das ganze dann am besten mit einem gut darstellbaren Alphabet (Buchstaben und Zahlen) und Caesar oder Vigenere! Man könnte auch XOR, ModuloAddition oder noch aufwendigere Verfahren benutzen, doch bekommt man dann nur Darstellungsprobleme, weil man Hex verwenden muss!
Daher würde ich Vigenere ausgeweitet auf ein Alphabet mit Großbuchstaben, Kleinbuchstaben und Zahlen benutzen!
|
|
Silas
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Mi 26.03.08 22:49
Martok hat folgendes geschrieben: | Hm, als Stichwort könnte vllt auch noch TMemIniFile mit TMemoryStream dienen... auch wenn dann wieder die Daten längere Zeit unverschlüsselt im RAM liegen. |
Du könntest es auch mal mit meiner INI-Klasse versuchen, sie kann ebenfalls in einen Stream speichern und wäre bei deinen für Ini-Verhältnissen recht großen gme-Dateien deutlich schneller. (Um die es ja geht, oder?)
Die Datei als Ganzes im Stream zu verschlüsseln ist IMHO schneller zu bewerkstelligen als die Werte einzeln. Ein einfaches Xor dürfte für deine Zwecke sicher reichen.
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|
Fabian E. 
      
Beiträge: 554
Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
|
Verfasst: Do 27.03.08 02:37
also, ich denke, dass die variante für das verschlüsseln der einzelnen einträge das richtige für mich ist. nur stellt sich jetzt die frage, wie ich den schlüssel speichern soll...
in der exe hardgecodet ist vielleicht etwas blöd oder?hat da jemand eine einfache idee?
gruß
|
|
WIng2005
      
Beiträge: 49
|
Verfasst: Do 27.03.08 08:30
Hallo,
was haltet ihr (beim Thema verschlüsseln) hiervon:
Delphi-Quelltext 1: 2: 3:
| var s:string
s:=IdencoderXXE1.Encode(edit1.Text); |
//bzw.
Delphi-Quelltext 1:
| s:=IddecoderXXE1.DecodeToString(edit2.Text) |
legt das ganze "verschlüsselt" als String ab bzw. "entschlüsselt" das ganze wieder.
MFG
Steffen
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 27.03.08 10:28
wie wär's mit ROT13 de.wikipedia.org/wiki/ROT13 ein allgemein anerkannter standart.
sogar hier im forum, gab es schon einen thread hierzu: www.delphi-forum.de/...3Projekte_67244.html
ein sourcecode ist z.b. von hier zu herhalten: www.roland-illig.de/lang.delphi.rot13.html
<HTH>
|
|
Silas
      
Beiträge: 478
Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
|
Verfasst: Do 27.03.08 10:41
Warum denn nicht einfach XOR?
Kürzer, schneller, genauso symmetrisch und kann auch nicht-Textzeichen verschlüsseln:
Delphi-Quelltext 1: 2:
| for i := 1 to Length(Str) do Str[i] := Char(Byte(Str[i]) xor 42); |
@Hardcoded: Wenns nur darum geht, einfach das Lesen zu verhindern, sollte es reichen. Ich glaube kaum, dass jemand um ein Spiel zu gewinnen einen Disassembler anwerfen wird 
_________________ Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat
|
|