AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

xor, was ist falsch?

Ein Thema von Angel4585 · begonnen am 11. Okt 2006 · letzter Beitrag vom 11. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

xor, was ist falsch?

  Alt 11. Okt 2006, 08:48
Hallo,

ich hab folgendes:

Delphi-Quellcode:
const cschluessel = 'asdfghjkl';


function DoCrypt(AText : string):string;
var
  i : integer;
begin
for i:= 1 to Length(AText) do
  AText[i]:= Chr(Ord(cschluessel[Succ(i mod Length(cschluessel))]) xor Ord(AText[i]));
Result:=AText;
end;

irgendwoe hat sich da ein Fehler eingeschlichen, es wird zwar verschlüsselt, aber nichtmehr korrekt entschlüsselt. Hab ich da einen Denkfehler?

Der String der übergeben wird ist der Inhalt einer INi-Datei den ich in eine Stringlist lade. Also Stringlist.Text

Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#2

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:06
Delphi-Quellcode:
const cschluessel = 'asdfghjkl';


function DoCrypt(AText : string):string;
var
  i : integer;
begin
for i:= 1 to Length(AText) do
  AText[i]:= Chr(Ord(cschluessel[i mod Length(cschluessel)]) xor Ord(AText[i]));
Result:=AText;
end;

so gehts

muss ich cschluessel nicht von 1 bis Length(csschluessel) ansprechen?
ist doch ein string oder?
wenn ich von 0 bis Pred(Length(cschluessel)) gehts
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#3

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:20
Also sei mir nich bös, aber bei mir gehts so net.


Delphi-Quellcode:

Procedure TForm1.Button1Click(Sender: TObject);
Var
  l: Tstringlist;
Begin
  l := Tstringlist.create;
  l.text := Memo1.Lines.Text;
  l.text := Docrypt(l.text);
  memo1.lines.text := l.text;
  l.free;
End;
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:22
Hallo Martin,

dein Fehler steckt in deiner Indexberechnung:

Delphi-Quellcode:
// Succ(i mod Length(cSchlussel))
   Succ(Pred(i) mod Length(cSchluessel))
Delphi-Quellcode:
function XorStr(const s, key: String): String;
var
  i, iKey: Integer;
begin
  SetLength(Result, Length(s));
  iKey := 0;
  for i := 1 to Length(s) do
  begin
    iKey := Succ(iKey mod Length(key));
    Result[i] := Chr(Ord(key[iKey]) xor Ord(s[i]));
  end;
end;
Grüße vom marabu


@Uwe: Probiere es mal so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
begin
  s := XorStr(Memo1.Text, cSchluessel);
  Memo1.Text := XorStr(s, cSchluessel);
End;
Oder auch mit DoCrypt() - wenn der Fehler draußen ist.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:28
@marabu:Warum spielt das eine Rolle? Ich fang beim verschlüsseln und beim entschlüsseln beim selben index an, also dürfte das kein unterschied machen oder?


Zitat von Corpsman:
Also sei mir nich bös, aber bei mir gehts so net.


Delphi-Quellcode:

Procedure TForm1.Button1Click(Sender: TObject);
Var
  l: Tstringlist;
Begin
  l := Tstringlist.create;
  l.text := Memo1.Lines.Text;
  l.text := Docrypt(l.text);
  memo1.lines.text := l.text;
  l.free;
End;
Du schreibst die verschlüsselte version ins Memo, du musst ert weider ENTschlüsseln
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#6

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:31
@marabu

Das kann aber auch nicht wirklich funktionieren,

Da wenn Ikey = Length(Key) -> Ikey := -1; geschieht. Das wäre dann ein wenig Fatal. Bei mir hat es jedenfalls auch nicht getan.

Aber mit :

Delphi-Quellcode:
Const
  cschluessel = 'asdfghjkl';

Function DoCrypt(AText: String): String;
Var
  i: integer;
Begin
  For i := 1 To Length(AText) Do
    AText[i] := Chr(Ord(cschluessel[i Mod Length(cschluessel) + 1]) Xor Ord(AText[i]));
  Result := AText;
End;

..

Procedure TForm1.Button1Click(Sender: TObject);
Var
  s: String;
Begin
  s := DoCrypt(Memo1.Text);
  Memo1.Text := s;
End;
Funktionierts echt gut.

@Angel

Mus ich nicht wenn ich 2 mal auf den Button Clicke
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:39
@Martin:

dein Code funktioniert zwar (zufällig), aber er benutzt das Byte vor dem Schlüssel - das letzte Zeichen im Schlüssel allerdings nie.

Ein 1-n-Ring wird nunmal mit Succ(i mod n) gebildet und ein 0-n-Ring mit Succ(i) mod Succ(n).



@Uwe:
Zitat von Corpsman:
Das kann aber auch nicht wirklich funktionieren
hast du es ausprobiert?

Grüße

PS: Schreibfehler korrigiert - hatte Pred() aus meinem ersten Beitrag kopiert...
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#8

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:46
Ich Habe es getestet:

mit :

Delphi-Quellcode:
Const
  cschluessel = 'asdfghjkl';

Function DoCrypt(AText: String): String;
Var
  i: integer;
Begin
  For i := 1 To Length(AText) Do
    AText[i] := Chr(Ord(cschluessel[i Mod Length(cschluessel) + 1]) Xor Ord(AText[i]));
  Result := AText;
End;
und
Delphi-Quellcode:
Const
  cschluessel = 'asdfghjkl';
Function DoCrypt(AText: String): String;
Var
  i: integer;
Begin
  For i := 1 To Length(AText) Do
    AText[i] := Chr(Ord(cschluessel[i Mod Length(cschluessel)]) Xor Ord(AText[i]));
  Result := AText;
End;
und Memo1.text = 'Hallo Welt';


Es hat beidesmal geklappt

allein das ist schon "Komisch"
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#9

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:51
also wenn die länge 4 beträgt, sieht die reihenfolge der indexe wenn ich i nicht eins veringere(meine version) doch so aus:

1,2,3,0,1,2,3,0,1,2,3,...


wenn ich i verringere(deine version) so:

0,1,2,3,0,1,2,3,...

oder nicht?

Das sollte doch trotzdem funktionieren, da ich beim VERschlüsseln und beim ENTschlüsseln immer das selbe verwende.

@Uwe: probier längere strings und mehr zeilen
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#10

Re: xor, was ist falsch?

  Alt 11. Okt 2006, 09:55
Hmm also wenn ich deutlich Längere Passwörter Nehme ist es Klar

nur
Delphi-Quellcode:

Const
  cschluessel = 'asdfghjkl';

Function DoCrypt(AText: String): String;
Var
  i: integer;
Begin
  For i := 1 To Length(AText) Do
    AText[i] := Chr(Ord(cschluessel[i Mod Length(cschluessel)]) Xor Ord(AText[i]));
  Result := AText;
End;
Geht. Allerdings würde das Bedeuten das Delphi die Stringkonstante in einen Array of Char baut der dann INdex 0..Length -1 hat merkwürdig.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  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 09:20 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