Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kann mir jemand diesen C++ Code in Delphi umwandeln? (https://www.delphipraxis.net/14585-kann-mir-jemand-diesen-c-code-delphi-umwandeln.html)

Pseudemys Nelsoni 12. Jan 2004 04:35


Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
hoi,

um diesen code geht es:

Delphi-Quellcode:
#include <string.h>

void main(void)
{
   char pass[] = "12345678";
   char apgard[9];

   apgar(pass, apgard);
}

void apgar(char v[], char *outbuf)
{
        char w[9];
        int i;

        for (i = 0; i < 8; i++)
        {
                int a = v[i];
                w[i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./"([a & 1 ? a << (a & 1) & v[8 - i] : a ^ v[8 - i]) & 0x3f];
        }
        w[8] = 0;
        strcpy(outbuf, w);
        return;
}


ich hatte schon angefangen, aber sicher falsch, so sah meins aus *g*:

Delphi-Quellcode:
procedure apgar(pw, apg: string);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
var
  pass: string;
  apgard: string[9];
begin
  pass := Edit1.text;
  apgar(pass, apgard);
end;
also wäre echt nett wenn jemand diesen C Source s.o in delphi source umwandeln könnte. Ich les jetzt erstmal luckies DLL Tutorial, bis später

Robert Marquardt 12. Jan 2004 06:47

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Ich kopier mir mal das Zeug und denke genauer drueber nach.
Das ist wirklich ein freches Stueck Code.
for ist in Delphi nicht moeglich fuer diesen Algorithmus, denn die Laufvariable wird veraendert.

Pseudemys Nelsoni 12. Jan 2004 07:00

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
hoffe das das in Delpjhi möglich ist :oops:

das ist nämlich das teil das meine passwörter "encryptet"

Robert Marquardt 12. Jan 2004 07:22

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Es scheint ein Fehler im C Sourcecode zu sein.
w[i = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789./"([a & 1 ? a << (a & 1) & v[8 - i] : a ^ v[8 - i]) & 0x3f];
ist unsinnig, denn es wird nicht an w zugewiesen.
Ich nehme an es heisst
w[i] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789./"([a & 1 ? a << (a & 1) & v[8 - i] : a ^ v[8 - i]) & 0x3f;

Mit dieser Annahme geht es mit einem for-loop.

Delphi-Quellcode:
procedure apgar(V: PChar; Outbuf: PChar);
const
  Encoding = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./';
var
  W: array [0..8] of Char;
  I: Integer;
  A: Integer;
begin
  for I := 0 to 7 do
  begin
    A := Integer(V[I]);
    // a & 1 ?
    if Odd(A) then
      W[I] := Encoding[(a shl ((a and 1) and V[8-I])) and $3F]
    else
      W[I] := Encoding[(a xor V[8-I]) and $3F];
  end;
  Move(W[0], Outbuf[0], 8);
end;
Bitte pruefe die C-Source nochmal.

Robert Marquardt 12. Jan 2004 07:25

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Eh natuerlich sollte es in C
w[i] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456789./"([a & 1 ? a << (a & 1) & v[8 - i] : a ^ v[8 - i]) & 0x3f];
heissen, denn es fehlt ja eine eckige Klammer.

Robert Marquardt 12. Jan 2004 07:33

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
...und noch zwei Fehler. Diesmal bei mir.
Delphi-Quellcode:
procedure apgar(V: PChar; Outbuf: PChar);
const
  Encoding = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./';
var
  W: array [0..8] of Char;
  I: Integer;
  A: Integer;
begin
  for I := 0 to 7 do
  begin
    A := Integer(V[I]);
    // a & 1 ?
    if Odd(A) then
      W[I] := Encoding[((a shl ((a and 1) and V[8-I])) and $3F)+1]
    else
      W[I] := Encoding[((a xor V[8-I]) and $3F)+1];
  end;
  W[8] := #0;
  Move(W[0], Outbuf[0], 8);
end;

Pseudemys Nelsoni 12. Jan 2004 08:06

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
hoi robert,

das sieht ja wirklich gut aus :cyclops:


kanst du mir noch sagen was ich an die 2 PChars übergeben muss? 1mal das passwort und noch?
dann könnt ich es mal ausprobieren :zwinker:

Nightshade 12. Jan 2004 08:28

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Hallöle..

Delphi-Quellcode:
procedure apgar(V: PChar; Outbuf: PChar);
Das sieht für mich so aus, als ob V das Password ist, und über Outbuf gibt er dir das Password verschlüsselt zurück.


PS. Kann es sein, das es :
Delphi-Quellcode:
procedure apgar(V: PChar; var Outbuf: PChar);
heissen muss ?

Robert Marquardt 12. Jan 2004 08:40

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
@Nightshade: Nein, da es ja ein Zeiger ist.

Delphi-Quellcode:
var
   pass: PChar;
   apgard: array [0..8] of Char;
begin
   // es sollten mindestens 8 Zeichen sein!
   pass := '12345678';
   apgar(pass, @apgard[0]);
   // in apgard sollte jetzt das verschluesselte Passwort stehen

Pseudemys Nelsoni 12. Jan 2004 08:56

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
ich bekomme in dieser zeile einen fehler

Delphi-Quellcode:
W[I] := Encoding[((a shl ((a and 1) and V[8-I])) and $3F)+1]

Zitat:

[Fehler] Unit1.pas(40): Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] Unit1.pas(42): Operator ist auf diesen Operandentyp nicht anwendbar
[Fataler Fehler] Project2.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

Robert Marquardt 12. Jan 2004 10:59

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Versuch mal
Delphi-Quellcode:
  W[I] := Encoding[((a shl ((a and 1) and Integer(V[8-I]))) and $3F)+1]
und
Delphi-Quellcode:
  W[I] := Encoding[((a xor Integer(V[8-I])) and $3F)+1]

Pseudemys Nelsoni 12. Jan 2004 11:44

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
hoi,

wow das geht schon FAST :)

nochmal eine frage, wenn ich in meinem tool jetzt "02580258" encrypte, ist das ergebnis "WkQkakQk"

also die Q's stimmen irgendwie nicht, das ergebnis müsste "WkGkakGk" sein, weisst du noch wo da der fehler liegt? in dem code kenn ich mich nicht so aus :(

danke für alles btw :)

Robert Marquardt 12. Jan 2004 16:23

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Da bin ich gerade ueberfragt und nicht in Stimmung mich reinzuknien.
Versuch mal Cardinal statt Integer bei der Umtypung.
Ansonsten morgen.

Pseudemys Nelsoni 12. Jan 2004 17:18

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
hoi, ne auch mit Cardinal geht es nicht :\
Aber das mit morgen trifft sich gut, ich muss nämlich langsam mal ins bett, de ganze letzte nacht durchgemacht mit delphi :mrgreen:

btw, falls du morgen nochmal vorbeischaust, guck dir mal aus meinem anderem thread die datei hier an: http://www.delphipraxis.net/download.php?id=3711


die macht genau das wie es aussehen sollte, also die egerbnisse :)


danke für alles schonmal


gute "nacht" :zwinker:

Robert Marquardt 12. Jan 2004 18:18

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Tut mir leid ich habe kein RAR.

Pseudemys Nelsoni 12. Jan 2004 23:58

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier als Zip im anghang

scp 13. Jan 2004 02:03

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
So, hab mal verglichen, warum alle anderen ausser den Gs (Qs) richtig sind.
Der Unterschied ist, das bei Ord(V[I]) bzw. Integer(V[I]) bei den falschen eine ungerade Zahl ist, das heisst es stimmt was bei der oberen Formel nicht.

Edit:
Habs raus, eine Klammer war zu viel:
Delphi-Quellcode:
W[I] := Encoding[ ( ( a shl (a and 1) and Ord(V[8-I]) ) and $3F )+1 ];

Pseudemys Nelsoni 13. Jan 2004 03:28

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
daaaanke euch beiden, jetzt funktionierts wie es soll :)

Robert Marquardt 13. Jan 2004 07:10

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
Da merkt man wie man durch Pascal versaut wird ;-)
Da laesst mein C doch tatsaechlich nach. Dabei ist es die endeuting interessntere Sprache.

Pseudemys Nelsoni 13. Jan 2004 08:55

Re: Kann mir jemand diesen C++ Code in Delphi umwandeln?
 
"versaut"... nun mach delphi mal nicht so schlecht :mrgreen:


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