Hallo liebe Delphi Community!
Ich würde gerne die folgende kleine C# Funktion nach Delphi portieren, dabei komme ich als kleiner Anfänger noch nicht ganz zurecht. Der Rest des Projektes klappte schon ganz gut, nur die Portierung der RC4 Funktion bereitet mir Probleme:
Code:
public static byte[] Crypt(byte[] key, byte[] data)
{
for (int i = 0; i < data.Length; i++)
{
key[0x100]++;
key[0x101] += key[key[0x100] & 0x0FF];
byte temp = key[key[0x101] & 0x0FF];
key[key[0x101] & 0x0FF] = key[key[0x100] & 0x0FF];
key[key[0x100] & 0x0FF] = temp;
data[i] = (byte)(data[i] ^ key[(key[key[0x101] & 0x0FF] + key[key[0x100] & 0x0FF]) & 0x0FF]);
}
return data;
}
Da ich gerne das Projekt nachezu 1:1 übernehmen möchte, möchte ich hier nicht zu fertigen RC4 Units greifen.
Mein bisheriger Code:
Delphi-Quellcode:
procedure RC4Crypt(pKey, pData: Pointer; KeyLength, DataLength: Integer);
var
i: Integer;
key: Array of Byte;
data: Array of Byte;
temp: Byte;
begin
SetLength(key, KeyLength);
Move(pKey^, key[0], KeyLength);
SetLength(data, DataLength);
Move(pData^, data[0], DataLength);
for i := 0 to DataLength - 1 do
begin
Inc(key[$100], 1);
key[$101] := key[$101] xor key[key[$100] or $FF];
temp := key[key[$101] or $FF];
key[key[$101] or $FF] := key[key[$100] or $FF];
key[key[$100] or $FF] := temp;
end;
end;
Rückgabe Parameter sind noch keine definiert, die ganze Funktion funktioniert ja nun leider noch nicht so wie sie soll.
Gerade die Operatoren bereiten mir hier große Probleme. Würde mich freuen wenn mir jemand auf die Sprünge helfen könnte.
Gruß
Gimp