Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit RC4 (https://www.delphipraxis.net/31799-problem-mit-rc4.html)

fkerber 14. Okt 2004 07:25


Problem mit RC4
 
Hi!

Ich verwende für die RC4 Verschlüsselung folgende Unit:
http://www.delphipraxis.net/internal...&highlight=rc4

Und habe folgenden Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  user, CryptedUser: String;
  RC4Context: TRC4Context;
begin
  user:='fkerber';
  RC4Init(RC4Context,'{52F3B05A-462E-495E-8C55-4D226A342E01}');
  RC4Code(RC4Context,user[1],Crypteduser[1],length(user));
  RC4Done(Rc4Context);
end;
Aber es kommt immer:
Zitat:

---------------------------
Project1
---------------------------
Access violation at address 00403E46 in module 'Project1.exe'. Read of address FF52C288.
---------------------------
OK
---------------------------

Und zwar hier:
Delphi-Quellcode:
procedure RC4Code(var RC4: TRC4Context; const Source; var Dest; Count: Integer);
var
  S: Integer;
  T: Byte;
begin
  with RC4 do
    for S := 0 to Count -1 do
    begin
      Inc(I);
      T := D[I];
      Inc(J, T);
      D[I] := D[J];
      D[J] := T;
      Inc(T, D[I]);
      TByteArray(Dest)[S] := TByteArray(Source)[S] xor D[T]; <-------------------
    end;
end;
Wo ist der Fehler?

Ciao Frederic

negaH 18. Okt 2004 06:47

Re: Problem mit RC4
 
Delphi-Quellcode:
 RC4Code(RC4Context,user[1],Crypteduser[1],length(user));
Du verschlüsselst den Datenbuffer User[] mit Length(user) Bytes nach CryptedUser[].
Wie groß ist der Speicherbereich den CryptedUser[] umfasst ??
Rausbekommen kannst du das mit Length(CryptedUser) VOR dem Aufruf von RC4Code().

Gruß hagen

PS: kleiner Tipp am Rande -> SetLength();

fkerber 18. Okt 2004 06:53

Re: Problem mit RC4
 
Hi!

:wall: :wall:
Danke dir. Habe ich beim Kopieren aus der Code-Lib übersehen.
Bin aber mittlerweile beim DEC gelandet, da gabs dann keinen Fehler mehr :thumb:

Ciao Frederic


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