AGB  ·  Datenschutz  ·  Impressum  







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

Übersetzungsprobleme c -> delphi

Ein Thema von Hybrid666 · begonnen am 15. Jul 2006 · letzter Beitrag vom 15. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#1

Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 13:37
Hi,

ich hab folgendes problem, ein kumpel hat mich gebeten einen code von ihm in delphi zu übersetzen...

diesen hier:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
  // Viaiablen aufmachen
  int i, j;
  char text[64];
  char textneu[64];
  char schluessel[32];
  // text und schlüssel einlesen
  printf("Text eingeben.\n");
  gets(text);
  printf("Schluessel eingeben.\n");
  gets(schluessel);
  // verschlüsseln
  for (i=0 , j = 0; text[i] != '\0' ; i++ , j++ )
  {
    if (schluessel[j] == '\0') { j = 0; }
    textneu[i] = ((schluessel[j] & 0x0F) ^ text[i]);
  }
  textneu[i]='\0';
  // Ausgeabe und dann Ende
  printf("verschluesselt: %s\n",textneu);
  system("PAUSE");   
  return 0;
}
und zwar hab ich bei folgendem probs:

Code:
for (i=0 , j = 0; text[i] != '\0' ; i++ , j++ )
was

2 variablen? und was heißt "\0"???

Code:
textneu[i] = ((schluessel[j] & 0x0F) ^ text[i]);
das versteh ich garnet...der rest iss mir eig. klar...wär nett wenn mir einer helfen könnte
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 13:50
Moin Hybrid,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Wenn ich mich nicht ganz irre, müsste die Schleife so aussehen:

Delphi-Quellcode:
i := 0;
j := 0;
while text[i] <> #00 do begin
  //.....
  inc(i);
  inc(j);
end;
Wie Du daraus schon ersehen kannst entspricht \0 in C dem #00 in Delphi.

Die fragliche Zeile müsste in Delphi so aussehen:

textneu[i] := char((ord(schluessel[j]) and $0F) xor ord(text[i]));
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#3

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 14:08
Delphi-Quellcode:
J := 0;
for I := 1 to Length(Text) do
begin
  Text[I] := Char(Ord(Text[I]) xor Ord(Schlüssel[J +1]));
  J := (J +1) mod Length(Schlüssel);
end;

// oder

J := 1;
for I := 1 to Length(Text) do
begin
  Text[I] := Char(Ord(Text[I]) xor Ord(Schlüssel[J]));
  Inc(J);
  if J > Length(Schlüssel) then J := 1;
end;

// oder

for I := 0 to Length(Text) -1 do
  Text[I +1] := Char(Ord(Text[I +1]) xor Ord(Schlüssel[I mod Length(Schlüssel) +1]));
Aber diese Art der Verschlüsselung ist eh sehr unsicher.
Obige Sourcen gehen davon aus das Text und Schlüssel LongStrings -> String Typen sind.

Gruß Hagen
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#4

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 14:12
danke für die rasante antwort...also ich hab versucht mit deinen übersetzungen die function encrypt zu baun...sieht so aus:

Delphi-Quellcode:
function encrypt(text,schluessel: string): string;
var
  i,j: integer;
  textneu: string;
begin
  i := 1;
  j := 1;
  while text[i] <> #00 do
  begin
    if (schluessel[j] = #00) then j := 1;
    textneu[i] := char((ord(schluessel[j]) and $0F) xor ord(text[i]));
    inc(i);
    inc(j);
  end;
  result := textneu;
end;
das problem ist nur das ich an der stelle
textneu[i] := char((ord(schluessel[j]) and $0F) xor ord(text[i])); eine access violation bekomme ohne spezifische fehlermeldung...was kann das sein?

MfG Hybrid666
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#5

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 14:14
Zitat von negaH:
Delphi-Quellcode:
J := 0;
for I := 1 to Length(Text) do
begin
  Text[I] := Char(Ord(Text[I]) xor Ord(Schlüssel[J +1]));
  J := (J +1) mod Length(Schlüssel);
end;

// oder

J := 1;
for I := 1 to Length(Text) do
begin
  Text[I] := Char(Ord(Text[I]) xor Ord(Schlüssel[J]));
  Inc(J);
  if J > Length(Schlüssel) then J := 1;
end;

// oder

for I := 0 to Length(Text) -1 do
  Text[I +1] := Char(Ord(Text[I +1]) xor Ord(Schlüssel[I mod Length(Schlüssel) +1]));
Aber diese Art der Verschlüsselung ist eh sehr unsicher.
Obige Sourcen gehen davon aus das Text und Schlüssel LongStrings -> String Typen sind.

Gruß Hagen
wow danke...das das unsicher ist ist in dem fall egal...

das soll nur in ne DLL rein...ich bin gamers.IRC coder und wir wollen die verkrüppelte $decode und $encode durch ne DLL ersetzen weil das $decode nicht alles wieder ins reine bringen kann was $encode ausspuckt (vor allem bei sehr langen texten) und ich schreib einfach ne DLL die die config file direkt schreibt sodass man nicht nur aus ner ini file was ins gIRC kopieren muss um das auth PW zu haben ^^

MfG Hybrid666
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 14:15
Moin Hybrid,

Du hast vergessen textneu zu initialisieren.

  SetLength(textneu,length(text));
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#7

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 14:23
@ negaH: keiner von den snippets returned irgendwas. trotzdem danke

@ Christian Seehase: jetzt gehts. VIELEN VIELEN DANK!
mein nächstes prob (ich hab sowas noch nie in delphi gamacht, das ganze $OF und so und #00 ist mir fremd): wie lasse ich das ganze rückwärts laufen? bitte nur vorgehensweiße, ich will das lernen und selber veruschen also muss ich nur praktisch wissen was das
textneu[i] := char((ord(schluessel[j]) and $0F) xor ord(text[i])); tut...

MfG Hybrid666
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 14:32
textneu[i] := char((ord(schluessel[j]) and $0F) xor ord(text[i])); ord(schluessel[i]) ermittelt den Ascii Wert des Zeichens an der i'ten Stelle des Schlüssels
der Wert wird and mit Hex 0F verknüpft
- das Ergebnis daraus wird XOR mit dem Wert des Zeichens j des Textes verknüpft (ord(text[i]))

- aus diesem Ergebnis wird das Zeichen i des textneu ermittelt (char(..)).
char ist die Umkehrfunktion von ord.

Hoffe es ist einigermaßen verständlich.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#9

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 14:37
Zitat von Klaus01:
textneu[i] := char((ord(schluessel[j]) and $0F) xor ord(text[i])); ord(schluessel[i]) ermittelt den Ascii Wert des Zeichens an der i'ten Stelle des Schlüssels
der Wert wird and mit Hex 0F verknüpft
- das Ergebnis daraus wird XOR mit dem Wert des Zeichens j des Textes verknüpft (ord(text[i]))

- aus diesem Ergebnis wird das Zeichen i des textneu ermittelt (char(..)).
char ist die Umkehrfunktion von ord.

Hoffe es ist einigermaßen verständlich.

Grüße
Klaus
jo sehr verständlich, das einzige was mir unklar war war XOR und $0F...aber nu weiß ich ja was was ist...danke...aber eine frage hätte ich noch:was ist #00? ist #00 auch ein HEX wert? wenn ja warum fängt der eine mit $ an der andere mit #? ^^

ich muss ja praktisch dann weider so vorgehen...
i läuft den text durch (in dem fall den verschlpüsselten) und j den schlüssel...wenn j durch ist wieder auf 1 setzen iss klar...dann muss ich von dem schluessel an der stelle j $OF abziehen und mit xor dann den text an der stelle i nehmen...oder?

MfG Hybrid666

MfG Hybrid666
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Übersetzungsprobleme c -> delphi

  Alt 15. Jul 2006, 14:41
die Umkehrfunktion von XOR ist XOR
Wenn Du einen Wert mit XOR verknüpfst und das Ergebnis daraus wieder mit dem gleichen Wert
XOR verknüpfst wird daraus wieder der Ausgangswert.

$ kennzeichnet einen HexWert
# kennzeichnet eine Dezimalwert

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:55 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