need-some-blood Geschrieben 10. Mai 2004 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 11. Mai 2004 Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
need-some-blood Geschrieben 13. Mai 2004 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.