AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme beim Übersetzen vom C# Code

Ein Thema von Gimp · begonnen am 17. Aug 2010 · letzter Beitrag vom 17. Aug 2010
Antwort Antwort
Gimp

Registriert seit: 28. Dez 2007
7 Beiträge
 
Delphi 2006 Personal
 
#1

Probleme beim Übersetzen vom C# Code

  Alt 17. Aug 2010, 18:02
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
  Mit Zitat antworten Zitat
totti14

Registriert seit: 26. Mai 2005
Ort: Bremen
90 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Probleme beim Übersetzen vom C# Code

  Alt 17. Aug 2010, 18:15
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]);

Geändert von totti14 (17. Aug 2010 um 18:21 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Probleme beim Übersetzen vom C# Code

  Alt 17. Aug 2010, 18:22
Also dass '+' nicht 'xor', und '&' nicht 'or' heissen kann, da müsste man eigentlich so schon drauf kommen
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Probleme beim Übersetzen vom C# Code

  Alt 17. Aug 2010, 18:30
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
Marcel
  Mit Zitat antworten Zitat
Gimp

Registriert seit: 28. Dez 2007
7 Beiträge
 
Delphi 2006 Personal
 
#5

AW: Probleme beim Übersetzen vom C# Code

  Alt 17. Aug 2010, 18:41
Mhm wird einen gleich fertiger Code geliefert
Danke euch, wieder ein wenig dazugelernt. Werde es nachher mal ausprobieren.

lg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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