need-some-blood Geschrieben 10. Mai 2004 Geschrieben 10. Mai 2004 Hallo Freunde der Nacht. Hier mal wieder ein scheinbar :confused: Schwieriges Problem. Also ich schreibe gerade ein sehr einfachen Verschlüsselungs-Algorithmus. Dabei beschränke ich mich erstmel drauf den Text in Hex mit vertauschen Tetraden anzuzeigen. Also ist die "1" nicht 31 sondern 13. Sollte eigentlich ganz simpel sein. Doch wer mal meinen Quellcode durchspielt sieht schnell den Fehler gebe ich x1 aus kommt nicht 0x30 sondern 0x10 raus. Gebe ich entgegen x2 aus kommt 0xF raus. Ich befürchte das es an der Typenkonvertierung liegt. Aber wo?? Hier erstmal der Code procedure codify; var ordpass : Integer; var hexpass: string; var x1,x2,x3 : integer; begin ordpass:=ord(pass1[1]); hexpass:=inttohex(ordpass,2); x1:=strtoint(hexpass) and $F0; x2:=strtoint(hexpass) and $0F; //Shiften und verundung aus 03 ^10 = 13 // Ausgeklammert weil uninterresant beim Prob // x1:=x1 shl 2; //03--> // x2:=x2 shr 2; //10<-- // x3:=x1 and x2;//13 formpasswort.edit2.text:= inttohex(x1,1); formpasswort.edit3.text:= inttohex(x2,1); formpasswort.edit4.text:= hexpass; end; [/PHP] Wenn mir jetzt einer anbietet die Indiezies des String von "31" nur einfach nur zu tauschen, den warne ich vor. Der leichteste Weg ist nicht immer der des Wissbegierigsten! Also kann mir einer sagen warum es nicht funzt? MVG need-some-blood
geloescht_JesterDay Geschrieben 11. Mai 2004 Geschrieben 11. Mai 2004 Ich befürchte das es an der Typenkonvertierung liegt. Aber wo?? Ich hab das grad mal mit eigenem Code, nach deinen Vorstellungen, durchgespielt: procedure TForm1.Button1Click(Sender: TObject); var i, i1, i2: integer; s: String; begin i:= Ord(edit1.text[1]); // Eingabe ist 'a' s:= IntToHex(i, 2); // s = '61' edit2.Text:= s; // Zwischenergebnis ausgeben i1:= StrToInt(s) and $F0; //i1 = 48 i2:= StrToInt(s) and $0F; // i2 = 13 edit3.Text:= IntToHEx(i1, 2) + ', ' + IntToHex(i2, 2); // edit3.Text = '30, 0D' end; Also nicht 16, sondern 3D. Warum das? Wenn wir uns 3D mal ankucken ergibt das in Dec genau...was... 61! Der Fehler liegt also in der StrToInt Umwandlung. StrToInt von ($)'61' ist eben nicht 97 sondern bleibt 61. 61 ist aber $3D. Oder hab ich dich jetzt irgendwie falsch verstanden?
need-some-blood Geschrieben 13. Mai 2004 Autor Geschrieben 13. Mai 2004 Jep. Hast vollkommen recht. Hatte den Fehler an dem selben Abend auch entdeckt. Blödes Brett vorm Kopf. Jetzt tasuche ich doch die Chars im String. Sieht auch besser aus, und es kann jeder nachvollziehen. Wollte nur Wissen wo der Fehler liegt. Vielen Dank für die Bestätigung. MVG need-some-blood
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden