Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi datei kodieren und speichern (https://www.delphipraxis.net/147260-datei-kodieren-und-speichern.html)

maluprog 4. Feb 2010 16:23


datei kodieren und speichern
 
hallo,

habe für die kodierung von memo.text in listbox.items.add(s) Text verschlüsselt

Delphi-Quellcode:
procedure TForm1.BCodClick(Sender: TObject);
var s : string[255];
    c : array[0..255] of byte absolute s;
    i : Integer;
begin
        s := memo1.Text;
        For i := 1 To ord(s[0]) do c[i] := superkey[i] Xor c[i];
        ListBox1.Items.Add(s);
        memo1.Clear;
end;
.. diesen dann als txt-datei gespeichert.

Delphi-Quellcode:
procedure TForm1.BExpClick(Sender: TObject);
begin
        if sdcod.Execute then
        begin
         ListBox1.Items.SaveToFile(sdcod.FileName);
        end;
end;
Solange das programm läuft kann ich die kodierte Datei wieder entschlüsseln, verlasse ich das programm nach dem speichern und hole mir diese datei wieder, kann ich sie nicht mehr entschlüsseln.

über:
Delphi-Quellcode:
procedure TForm1.BImpClick(Sender: TObject);
begin
        if odcod.Execute then
        begin
         ListBox1.Items.LoadFromFile(odcod.FileName);
        end;
end;
erfolgt keine decodierung mehr.

Delphi-Quellcode:
procedure TForm1.BdecodClick(Sender: TObject);
var s : string[255];
    c : array[0..255] of byte absolute s;
    i : Integer;
begin
        s := ListBox1.Items[0];
        For i := 1 To Length(s) do s[i] := Chr(superkey[i] Xor ord(s[i]));
        memo1.Text := s;
        ListBox1.Clear;
end;
warum nicht? wer kann helfen, was ist falsch? :wall:

malu

[edit=Luckie]Delphi-Tags. Mfg, Luckie[/edit]

Wolfgang Mix 4. Feb 2010 16:44

Re: datei kodieren und speichern
 
Delphi-Quellcode:
s := ListBox1.Items[0];
Wenn ich nicht daneben tippe, beginnen die Items bei 1

[Edit] Fast vergessen, ersmal herzlich willkommen in der DP :dp:
... und XOR ist nicht wirklich eine Verschlüsselung [/Edit]

Luckie 4. Feb 2010 16:50

Re: datei kodieren und speichern
 
Nein, 0 ist schon richtig.

Und über die Sicherheit von XOR brauchen wir wohl nicht mehr zu diskutieren. ;)

Wolfgang Mix 4. Feb 2010 16:56

Re: datei kodieren und speichern
 
... dann müßte vlt. die For-Schleife mit 0 starten?

Corpsman 4. Feb 2010 17:01

Re: datei kodieren und speichern
 
bist du dir sicher, dass dein key der selbe ist ?

maluprog 4. Feb 2010 17:09

Re: datei kodieren und speichern
 
hallo,

mit
s := ListBox1.Items[1]; funktioniert nicht, kommt fehlermeldung = listenindex überschreitung Max(1) !

Schleife mit "0" zu beginnen klappt auch nicht mit decodierung, genauso wie bei "for i := 0 to ... ".

über xor bin ich gleicher meinung, möchte aber dieses lösen!

hoffe noch!

malu

maluprog 4. Feb 2010 17:13

Re: datei kodieren und speichern
 
hallo,

key und schlüssel sind sowohl beim speicher und laden, sowie kodierung und decodieren gleich!

danke bis hierhin, hoffe weiter :wall:
vielleicht muß die dateiverschlüsselung anders gespeichert werden?

malu

p80286 4. Feb 2010 17:40

Re: datei kodieren und speichern
 
Zunächst traue ich deinem SuperKey[i] überhaupt nicht über den Weg!
was sagt denn der Debugger?

Und warum decodierst Du eigentlich einen String und nicht das Byte array?
Gibt es in deinen verschlüsselten Daten $0D,$0A und $00 dann könnte das LoadfromFile in die Hose gehen!

Gruß
K-H

maluprog 4. Feb 2010 18:01

Re: datei kodieren und speichern
 
mit dem debugger ist alles o.k


vielleicht noch eine ergänzung;

procedure TForm1.FormCreate(Sender: TObject);
var i :integer;
begin
randseed:=code;
randomize;
for i := 1 to high(superkey) do superkey[i]:=random(255);
end;

wobei einmal als var

superkey : array[1..keysize] of byte;

deklariert ist.

als z. bsp. als const

keysize = 1234;
code = 5678; gesetzt sind. ( können auch andere Zahlenkombinationen sein! )

vielleicht hilft's weiter, habe inzwischen alles probiert!

die datei lädt schon meines erachtens schon richt, sehe ich ander zeichenkette, es muss am decodieren
nach einem neustart liegen!

malu

Luckie 4. Feb 2010 18:31

Re: datei kodieren und speichern
 
Da SuperKey bei jedem Start ein anderer zufälliger Wert zu gewiesen wird, klappt die Entschlüsselung natürlich nicht.

Und bitte benutzt die Delphi-Tags für deinen Code!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz