![]() |
Probleme beim Übersetzen vom C# Code
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:
Da ich gerne das Projekt nachezu 1:1 übernehmen möchte, möchte ich hier nicht zu fertigen RC4 Units greifen.
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; } Mein bisheriger Code:
Delphi-Quellcode:
Rückgabe Parameter sind noch keine definiert, die ganze Funktion funktioniert ja nun leider noch nicht so wie sie soll.
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; 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 |
AW: Probleme beim Übersetzen vom C# Code
Hi,
so müsste es sein ?
Delphi-Quellcode:
for i := 0 to DataLength - 1 do
begin Inc(key[$100], 1); key[$101] :=key[$101]+ (key[key[$100] and $FF]; temp := key[key[$101] and $FF]; key[key[$101] and $FF] := key[key[$100] and $FF]; key[key[$100] and $FF] := temp; data[i] := byte(data[i] xor key[(key[key[$101] and $0FF] + key[key[$100] and $0FF]) and $FF]); |
AW: Probleme beim Übersetzen vom C# Code
Also dass '+' nicht 'xor', und '&' nicht 'or' heissen kann, da müsste man eigentlich so schon drauf kommen ;)
|
AW: Probleme beim Übersetzen vom C# Code
mal ins Blinde übersetzt bitte nicht Steinigen
Delphi-Quellcode:
for I := 0 to SizeOf(Data) - 1 do
Begin Inc(Key[$100]); Key[$101] := Key[$101] + Key[Key[$100] and $FF]; Temp := Key[Key[$101] and $FF]; Key[Key[$101] and $FF] := Key[Key[$100] and $FF]; Key[Key[$100] and $FF] := Temp; Data[i] = (byte)(data[i] xor Key[(Key[Key[$101] and $FF] + Key[Key[$100] and $FF]) and $FF]); End; Result := Data; Edit: Mist zu Spät |
AW: Probleme beim Übersetzen vom C# Code
Mhm wird einen gleich fertiger Code geliefert ;)
Danke euch, wieder ein wenig dazugelernt. Werde es nachher mal ausprobieren. lg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 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