Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi xor erklärung (https://www.delphipraxis.net/143989-xor-erklaerung.html)

painrestricter 27. Nov 2009 14:11


xor erklärung
 
servuß

ich will in meinem neuen programm einen string mit xor verschlüsseln.
ich hab mir das angeschaut: http://forum.delphi-treff.de/showthread.php?t=24444

und verstehe ehrlich gesagt nicht, was bei
Delphi-Quellcode:
 s[i]:=char(23 Xor Ord(s[i]));
das Ord(s[i]) soll

und warum das char davor?

danke

TeronG 27. Nov 2009 14:16

Re: xor erklärung
 
Mal einfach ausgedrückt....
ord macht aus deinem buchstaben (nummer i) eine Zahl
und char macht aus einer Zahl einen Buchstaben.

kolbaschedder 27. Nov 2009 14:18

Re: xor erklärung
 
Hallo,

eigentlich ganz einfach.
s[i] ist das i-te Element im string s, also ein einzelnes Zeichen. Z.b. "a". Damit "a" nun als Zahl (ASCII-Code) interpretiert wird, wandelt Ord das Zeichen in eine Ordinalzahl (Ganzzahl). in diesem Fall wäre das nun 97. Mit dieser Zahl kann man jetzt rechnen. Bei der Zuweisung würde man ohne den Befehl "Char()" einem Zeichen eine Zahl zuordnen. Das geht natürlich nicht, also die Zahl via Char-Befehl in ein Zeichen umwandeln und dann zuweisen.

MfG

Kolbaschedder

TeronG 27. Nov 2009 14:27

Re: xor erklärung
 
Sei dir aber bewusst, dass das nicht wirklich sicher ist....


Zitat:

Zitat von negaH
Nachfolgend ein Source ... RC4 Algorithmus ... für eine sichere Verschlüsselung ... nicht viel mehr Code benötigt wird als für eine unsicherer XOR Verschlüsselung.

HIER der Code und mehr ...

MfG Ikke

painrestricter 27. Nov 2009 14:36

Re: xor erklärung
 
ah ok danke, denk das hab ich soweit verstanden

muss auch nicht so sicher sein, wird eh noch anderweitig verschlüsselt und ist vorerst mal nur zum test.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
if memo1.Text <> '' then
 text := memo1.text;
 try
  for i := 1 to length(text) do
  text[i] := char(22 XOR Ord(text[i]));
 except
   ...
else ..
Error: der linken seite kann nichts zugewiesen werden

was hab ich falsch gemacht?

thkerkmann 27. Nov 2009 14:47

Re: xor erklärung
 
Du hast die Variable Text nicht deklariert.

Gruss

painrestricter 27. Nov 2009 14:55

Re: xor erklärung
 
doch hab ich, schon ganz oben

TeronG 27. Nov 2009 14:56

Re: xor erklärung
 
Zitat:

Zitat von thkerkmann
Du hast die Variable Text nicht deklariert.

Gruss

Und meckern, dass er "text" nicht kennt tut er (der IDE^^) desswegen nicht, weil es schon ein "text" gibt.
Text -> property TCAption.

Neutral General 27. Nov 2009 15:14

Re: xor erklärung
 
Zitat:

Zitat von TeronG
Zitat:

Zitat von thkerkmann
Du hast die Variable Text nicht deklariert.

Gruss

Und meckern, dass er "text" nicht kennt tut er (der IDE^^) desswegen nicht, weil es schon ein "text" gibt.
Text -> property TCAption.

Ihr liegt beide falsch :stupid:

TForm besitzt keine Property "Text" und selbst wenn "Text" nicht deklariert wäre, dann gäbe es eine andere Fehlermeldung.

painrestricter: zeig mal ein bisschen mehr Code bzw. in welcher Zeile gibt es diesen Fehler?

TeronG 27. Nov 2009 15:41

Re: xor erklärung
 
Zitat:

Zitat von Neutral General
Ihr liegt beide falsch :stupid:

TForm besitzt keine Property "Text"

Tut es doch. bäähhh! (obwohl .. hab nicht wirklich genau nachgegugckt wo "text" nun genau her kommt :gruebel: )

Zitat:

Zitat von Neutral General
und selbst wenn "Text" nicht deklariert wäre, dann gäbe es eine andere Fehlermeldung.

tut es nicht... BÄH! :tongue:
(habe es vorhin selbst erst getestet ^^)

Über die getter Methode kann man wohl nicht direkt einzelne Char's/Zeichen ändern.

painrestricter 27. Nov 2009 15:44

Re: xor erklärung
 
Delphi-Quellcode:
var
  Form1: TForm1;
  text : string;

implementation

{$R *.dfm}

//bla bla bla

procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
if memo1.Text <> '' then begin
 text := memo1.text;
 try
  for i := 1 to length(text) do
  text[i] := char(21 XOR Ord(text[i]));
 except
  showmessage('bla bla');
 end
end
else
 showmessage('bla bla');
end;
edit: ok ich hab den fehler gefunden: ich hab text also string deklariert, und delphi hat es als irgendwas anderes erkannt. Hab jetzt einen anderen variablen namen genommen, und siehe da, es geht :wall:

Christian Seehase 27. Nov 2009 17:34

Re: xor erklärung
 
Moin,

Zitat:

Zitat von painrestricter
ich hab text also string deklariert

Wobei es prinzipiell keine gute Idee ist Variablen mit dem gleichen Namen zu deklarieren, wie Eigenschaften von Objekten heissen.
Die Variable Text, die Du deklariert hast, ist nicht das, was in der ButtonClick-Routine angesprochen wird.
Dort wird Text als Caption des Formulares angesehen. Das ist dann wohl auch der Grund, warum es mit einem anderen Namen funktioniert.

BTW:
Die Variable ist wahrscheinlich als (privates) Feld des Formulares ganz gut aufgehoben (statt als globale Variable)

omata 27. Nov 2009 19:33

Re: xor erklärung
 
Der Vollständighalber...

char ist ein Datentyp und somit wird hier ein Typcast (ist grundsätzlich böse) durchgeführt.

Das Umwandlen einer Ordinalzahl in das zugehörige Zeichen wird mit der Funktion chr durchgeführt.

painrestricter 28. Nov 2009 13:19

Re: xor erklärung
 
christian, dasselbe hab ich dann auch bemerkt, war mein fehler :)
aber dafür hat man ja euch :thumb:

hab einen frei erfundenen variablen namen genommen und jetzt geht alles perfekt

danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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