AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi xor funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

xor funktioniert nicht

Ein Thema von mlhk · begonnen am 4. Mai 2009 · letzter Beitrag vom 4. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
mlhk

Registriert seit: 4. Mai 2009
29 Beiträge
 
#1

xor funktioniert nicht

  Alt 4. Mai 2009, 11:07
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:
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;
diese progressbar füllt sich zum teil nicht ganz auf, soll das so sein?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 11:17
Du übergibst hier
Zitat:
V := V+ xorfunktion (text[i], key[j]);
ja bereits einzelne Zeichen. Was spricht also dagegen, aus dem Key-Parameter ein Char zu machen?

P.S.: Willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 11:21
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;
  Mit Zitat antworten Zitat
mlhk

Registriert seit: 4. Mai 2009
29 Beiträge
 
#4

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 11:27
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 11:33
Zitat:
diese progressbar füllt sich zum teil nicht ganz auf, soll das so sein?
ja, soll so

Oder setz vorher mal das .Max der ProgressBar auf die länge des Strings


und nochmal was das Ord(key) angeht ... das Ord liefert da den internen Pointer des Strings und kein Zeichen aus diesem String
$2B or not $2B
  Mit Zitat antworten Zitat
mlhk

Registriert seit: 4. Mai 2009
29 Beiträge
 
#6

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 11:51
sehr schön, noch kurz eine frage zur entschlüsselung, das xor sollte ja ansich gleich bleiben, nur die parameter ändern sich oder?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 11:54
wenn du den Text nochmals mit dem selben Schlüssel genauso bearbeitest, dann kommt der ursprüngliche Text raus.
$2B or not $2B
  Mit Zitat antworten Zitat
mlhk

Registriert seit: 4. Mai 2009
29 Beiträge
 
#8

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 12:03
perfekt, dann bedanke ich mich für eure hilfe und schließe das thema ab

mfg
max
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 13:22
Am Besten du nimmst eine sauber programmierte Funktion wie diese:
Delphi-Quellcode:
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;
Auf den Progressbar kannst du verzichten, weil die Funktion so schnell ist, dass das Zeichnen des Progressbars mehr Zeit braucht als die eigentliche Operation.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: xor funktioniert nicht

  Alt 4. Mai 2009, 13:27
Zitat:
Auf den Progressbar kannst du verzichten, weil die Funktion so schnell ist, dass das Zeichnen des Progressbars mehr Zeit braucht als die eigentliche Operation.
Das die Darstellung der Progressbar Zeit kostet stimmt. Aber das die eigentliche Zeit so gering ist das die Progressbar keinen Sinn macht hängt doch von der Datenmenge (Länge des Strings) ab und kann nicht pauschal beantwortet werden.
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 Uhr.
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