Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
Turbo Delphi für Win32
|
RC4-Verschlüsselung
28. Jul 2004, 12:29
Hagen hat hier eine Routine für eine RC4-Verschlüsselung gepostet:
Delphi-Quellcode:
type
TRC4Context = record
D: array[Byte] of Byte;
I,J: Byte;
end;
procedure RC4Init(var RC4: TRC4Context; const Key: String);
var
R,S,T,K: Byte;
U,L: Integer;
begin
L := Length(Key);
with RC4 do
begin
I := 0;
J := 0;
for S := 0 to 255 do D[S] := S;
R := 0;
U := 0;
for S := 0 to 255 do
begin
if U < L then K := PByteArray(Key)[U] else K := 0;
Inc(U);
if U >= L then U := 0;
Inc(R, D[S] + K);
T := D[S];
D[S] := D[R];
D[R] := T;
end;
end;
end;
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;
procedure RC4Done(var RC4: TRC4Context);
begin
FillChar(RC4, SizeOf(RC4), 0);
end;
maximov hat dafür eine kurzes Verwendungsbeispiel gepostet:
Delphi-Quellcode:
var
x: TRC4Context;
str1, str2, str3: string;
begin
readLn(str1);
setLength(str2,length(str1));
writeLn('text: '+str1);
RC4Init(x,'Passwort');
RC4Code(x, str1[1], str2[1], Length(str1)); // verschlüsseln
Rc4Done(x);
writeLn('coded: '+str2);
setLength(str3,length(str2));
RC4Init(x,'Passwort');
RC4Code(x, str2[1], str3[1], Length(str2)); // entschlüsseln
Rc4Done(x);
writeLn('encoded: '+str3);
readLn;
end.
|
|
Zitat
|