Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler bei XOR-Verschlüsslung? (https://www.delphipraxis.net/75565-fehler-bei-xor-verschluesslung.html)

EDatabaseError 21. Aug 2006 15:16


Fehler bei XOR-Verschlüsslung?
 
Ich habe folgenden Code:
Delphi-Quellcode:
function SimpleCryptString(const S, Key: string): string;
var
  i, j: Integer;
  C: Byte;
  P: PByte;
begin
  SetLength(Result, Length(S));
  P := PByte(Result);

  j := 1;
  for i := 1 to Length(S) do
  begin
    C := Ord(S[i]);

    C := C xor Ord(Key[j]);
    P^ := C;
    Inc(P);
    Inc(j);
    if j > Length(Key) then
      j := 1;
  end;
end;
der einen String verschlüsselt. Leider wird das - und alles was darauf folgt verschluckt??? Warum?

Bspw: Ich will test-test.de verschlüsseln.
Wenn ich das Resultat wieder entschlüssle bekomme ich folgendes test

Danke

Mfg
Tobi

JasonDX 21. Aug 2006 15:21

Re: Fehler bei XOR-Verschlüsslung?
 
Zitat:

Zitat von EDatabaseError
Ich habe folgenden Code:
Delphi-Quellcode:
function SimpleCryptString(const S, Key: string): string;
var
  i, j: Integer;
  C: Byte;
  P: PByte;
begin
  SetLength(Result, Length(S));
  P := PByte(Result);

  j := 1;
  for i := 1 to Length(S) do
  begin
    C := Ord(S[i]);

    C := C xor Ord(Key[j]);
    P^ := C;
    Inc(P);
    Inc(j);
    if j > Length(Key) then
      j := 1;
  end;
end;

Warum so kompliziert mit PByte, Pointerinkrementierung ect.? :gruebel:

Delphi-Quellcode:
function SimpleCryptString(const S, Key: string): string;
var
  i: integer;
begin
  setLength(result, length(s));
  for i := 1 to length(s) do
    result[i] := chr(ord(S[i]) xor ord(Key[i mod length(Key) + 1]));
end;
;)

greetz
Mike

EDatabaseError 21. Aug 2006 15:32

Re: Fehler bei XOR-Verschlüsslung?
 
Suuuper danke! Funktoniert!

Mfg

EDatabaseError 21. Aug 2006 17:25

Re: Fehler bei XOR-Verschlüsslung?
 
In deinem Code wird mir leider die 1 verschluckt :stupid:

Mfg
Tobi

JasonDX 21. Aug 2006 17:47

Re: Fehler bei XOR-Verschlüsslung?
 
Zitat:

Zitat von EDatabaseError
In deinem Code wird mir leider die 1 verschluckt :stupid:

Du meinst vom Key? Er faengt nicht direkt beim 1. Zeichen an, sondern beim zweiten. Nach length(Key)-1 Zeichen wird auch das erste Zeichen des Keys verwendet ;)
Kann man natuerlich auch aendern:
Delphi-Quellcode:
result[i] := chr(ord(S[i]) xor ord(Key[(i - 1) mod length(Key) + 1]));
greetz
Mike

EDatabaseError 21. Aug 2006 17:49

Re: Fehler bei XOR-Verschlüsslung?
 
öhm, ne ich meinte folgendes:
"web47f1" verschlüssle ich und das entschlüsselte ist dann aber "web47f"

Mfg
Tobi

shmia 21. Aug 2006 17:54

Re: Fehler bei XOR-Verschlüsslung?
 
Zitat:

Zitat von JasonDX
Warum so kompliziert mit PByte, Pointerinkrementierung ect.? :gruebel:

Das habe ich irgendwann mal verbrochen, um möglichst hohe Geschwindigkeit zu erreichen. :hi:
Die Funktion ist korrekt; man muss aber darauf achten, das der verschlüsselte String auch Chr(0) enthalten kann.
Wenn man den verschlüsselten Text speichern möchte (z.B. in INI-Datei, Datenbank) sollte man zusätzlich noch BASE64 kodieren.


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