![]() |
XOR Verknüpfung, wie?
Hi!!!
Ich schreibe zur Zeit meine Diplomarbeit und brauch dringend Eure Hilfe!!! Ich studiere leider nicht Informatik, denn dann sollte ich das können. Habe leider nur wenige Delphi Kenntnisse. Wäre schön wenn Ihr es mir so einfach wie möglich erklären könntet. Zu meinem Problem: Ich muss neben einer Hauptsoftware (kein Delphiprogramm o.ä.) ein zusätzliches Nebenprogramm schreiben, welches aus einer Seriennummer die Checksumme berechnet. Beispiel: Der Befehl: <STX>TT? mit Checksumme: <STX>TT? cs<EOT> Hinter dem Fragezeichen wird noch ein Leerzeichen interpretiert und dann soll die Checksumme kommen (vorher natürlich berechnet) Um die Checksumme zu ermitteln müssen alle einzelnen Zeichen ín ASCII (HEX) umgewandelt werden und XOR verknüpft werden: dh.: 3C XOR 02 XOR 3E XOR 54 XOR 54 XOR 3F XOR 20 = 1F < STX > T T ? Leerzeichen Die Seriennummer kann natürlich verschieden lang sein. Wichtig ist auch noch, dass die Seriennummer in einem TXT Dokument hinterlegt ist und beim Start des Programms ausgelesen werden muss. Wenn die Checksumme berechnet worden ist sollte dann in ein anderes Testdokument stehen nach dem Beispiel: <STX>TT? 1F<EOT> Wäre cool wenn das einer von Euch hinbekommen würde Viiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiieeelen Dank!!!! |
Re: Ganz dringend!!! XOR Verknüpfung, wie??????
Hai DoktorD,
ändere bitte den Titel deines Threads! Dringend ist hier eigentlich jede Frage. Und mit den vielen ! und ? wird keiner lust haben deinen Thread zu lesen. Danke für dein Verständniss. |
Re: Ganz dringend!!! XOR Verknüpfung, wie??????
wir machen hier für niemand die arbeit. Sag einfach an welcher Stelle du dort nicht weiter kommst und was du bereits selbst geschafft hast. Wenn du sagst wo du nicht weiter kommst helfen wir dir gern aber wir machen nicht die komplette arbeit für dich.
|
Re: Ganz dringend!!! XOR Verknüpfung, wie??????
Warum vorher unbedingt in Hex umwandeln?
Ansonsten wirst Dir vielleicht dies hier weiterhelfen. ord(Zeichen1) XOR ord(Zeichen2) Grüße Klaus |
Re: Ganz dringend!!! XOR Verknüpfung, wie??????
Sorry wenn das so rübergekommen ist.
Ich hab mein Programm jetzt soweit, dass ich einen String mit der Seriennummer habe strSN:=123456 (Die Zahl, bzw. der String kann unterschiedlich lang sein) wie bekomme ich denn jetzt hin, dass ich jede einzelne Ziffer in einen ASCII Code XOR verknüpfen kann. 31 xor 32 xor 33 xor 34 xor 35 xor 36 wäre dann = 7 (in HEX) Hinweis: Ich brauche das alles in HEX Habt Ihr dafür ne Lösung? |
Re: Ganz dringend!!! XOR Verknüpfung, wie??????
Moin DoktorD,
wenn ich das richtig verstanden habe, fehlen Dir nur noch die entsprechend Begriffe um das in Delphi umsetzen zu können: Da es sich um eine unbekannte Länge handelt: For-Schleife begrenzt durch die Länge des Strings (length) Die Zeichen erst einmal in ihren Zahlenwert umsetzen: ord Umwandlung einer Ganzzahl in eine hexadezimale Ausgabe: IntToHex BTW: Wenn Du den Edit-Button in Deinem ersten Beitrag benutzt kannst Du den Titel des Threads ändern. |
Re: XOR Verknüpfung, wie?
Danke für deine Antwort. Ich weiß schon was du meinst, aber irgendwie habe ich probleme das umzusetzten
Hast du vielleicht ein Beispiel für die Schleife? Ich muss ja irgendwie die Nummer aufspalten, d.h. aus der ganzen Ziffer einzelne machen und dann umwandeln Was genau macht denn "ord"? Das was in der Hilfe steht verstehe ich nicht so wirklich |
Re: XOR Verknüpfung, wie?
Moin DoktorD,
Du kannst jedes Zeichen des Strings einzeln ansprechen. Um mal bei Deinem Beispiel zu bleiben: strSN[3] spricht das dritte Zeichen an, und statt eines festen Wertes nimmst Du den Schleifenzähler der for-Schleife. Mit ord(strSN[3]) bekommst Du dann den Zahlenwert, den das Zeichen an der dritten Stelle repräsentiert. |
Re: XOR Verknüpfung, wie?
Cool Danke. Ich probiere es gleich mal aus
|
Re: XOR Verknüpfung, wie?
Delphi-Quellcode:
ungetestet aber sollte so gehen.
function checksum(SNr:String):String;
VAR i:Byte; dummy:Byte; begin dummy:=ord(SNr[1] XOR ord (SNr[2]); for i:=3 to length(SNr) DO begin dummy:=dummy XOR ord(SNr[i]); end; result := IntToHex(dummy); end; Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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