![]() |
xor funktioniert nicht
hey,
mein problem besteht darin, dass ich bei meiner xor-verschlüsselung nur mist raus bekomme, ich denke mal das liegt daran ich mit einen ganzen wort als schlüssel arbeiten will, was ich als string speichern muss, nun nimmt die funktion ord aber nur char, also schaut es euch mal an, wäre dankbar für rückmeldungen
Delphi-Quellcode:
diese progressbar füllt sich zum teil nicht ganz auf, soll das so sein?
function xorfunktion (text: Char;key:string): char;
begin Result := Char(Ord(text) xor Ord(key)); end; procedure TForm2.Button1Click(Sender: TObject); var V, text: string; key: string; i,j: integer; begin memo1.Clear; text := memo2.text; key := edit3.text; V := ''; for i := 0 to Length(text) do begin for j := 0 to length(key) do begin V := V+ xorfunktion (text[i], key[j]); Application.ProcessMessages; ProgressBar1.Position := i+j; ProgressBar1.Update; memo1.Text := V; end; end; end; |
Re: xor funktioniert nicht
Du übergibst hier
Zitat:
P.S.: Willkommen in der DP :dp: |
Re: xor funktioniert nicht
Probiers mal so:
Delphi-Quellcode:
function xorfunktion (text: Char;key:char): char;
begin Result := Char(Ord(text) xor Ord(key)); // Nur 2 Chars miteinander xoren ! ord(string) sollte sowiso eine Fehlermeldung bringen! end; procedure TForm2.Button1Click(Sender: TObject); var V, text: string; key: string; i,keyindex: integer; begin memo1.Clear; text := memo2.text; key := edit3.text; V := ''; ProgressBar1.Max := length(text); // Progressbar einstellen for i := 1 to Length(text) do // Schleifengrenze korrigiert begin keyindex := i mod length(key) + 1 // Index des Schlüssels V := V + xorfunktion(text[i], key[keyindex]); ProgressBar1.Position := i; // .update nicht nötig Application.ProcessMessages; end; memo1.Text := V; end; |
Re: xor funktioniert nicht
ah gut danke, das funktioniertso einwandfrei, zu der frage warum ich key nicht gleich char gemacht habe, weil ich gleube char immer nur ein zeichen speichern kann ich aber erst mal den ganzen text da rein lesen muss
|
Re: xor funktioniert nicht
Zitat:
Oder setz vorher mal das .Max der ProgressBar auf die länge des Strings :zwinker: und nochmal was das Ord(key) angeht ... das Ord liefert da den internen Pointer des Strings und kein Zeichen aus diesem String :stupid: |
Re: xor funktioniert nicht
sehr schön, noch kurz eine frage zur entschlüsselung, das xor sollte ja ansich gleich bleiben, nur die parameter ändern sich oder?
|
Re: xor funktioniert nicht
wenn du den Text nochmals mit dem selben Schlüssel genauso bearbeitest, dann kommt der ursprüngliche Text raus.
|
Re: xor funktioniert nicht
perfekt, dann bedanke ich mich für eure hilfe und schließe das thema ab
mfg max |
Re: xor funktioniert nicht
Am Besten du nimmst eine sauber programmierte Funktion wie diese:
Delphi-Quellcode:
Auf den Progressbar kannst du verzichten, weil die Funktion so schnell ist, dass das Zeichnen des Progressbars mehr Zeit braucht als die eigentliche Operation.
function StringXorCrypt(const text, key:string):string;
var i, j, keylen : Integer; begin SetLength(Result, length(text)); j := 1; keylen := Length(key); for i := 1 to Length(text) do begin Result[i] := chr(ord(text[i]) xor ord(key[j])); Inc(j); if j > keylen then j := 1; end; end; |
Re: xor funktioniert nicht
Zitat:
Man sollte jedoch überlegen ob es wirklich Sinn macht die Progressbar bei jedem Schleifendurchlauf zu aktuallisieren oder ob es nicht sinnvoller wäre diese nur einmal alle X Sekunden zu aktuallisieren oder alle X Schleifendurchläufe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz