Problem mit Xor
Übersicht

![]() |
frigiBetreff: Problem mit Xor |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich möchte in einer For-Schleife (,die den Schlüssel vorgibt,) 2 mal Xoren.
Beim 1. Mal einen Text, den ich jezt einfach mal "txt$" nenne. Soweit funktioniert auch alles, aber wenn ich dann direkt danach diesen geXorten Text mit dem gleichen Schlüssel wieder Xoren möchte, kommt IMMER wieder der Anfangstext "txt$" raus, obwohl Xor ja eigentlich einfach umkehrbar ist (das hat bis jezt auch immer geklappt). Woran könnte das denn liegen (und wie krieg ichs weg)? |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Äh ja, wo genau liegt jetzt dein Problem?
Edit: Ich probiers jetzt mal blind: Entw. du willst, dass der Text nach dem zweiten Durchlauf noch mehr verschlüsselt ist, dann musst du natürlich den Schlüssel ändern, oder du willst, dass wieder der Anfangstext hervorkommt, dann musst du darauf achten, dass du zum ver- und entschlüsseln den selben Schlüssel benutzt. |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, dann wars nich genau genug ausgedrückt: ich will den Text wieder entschlüsseln. (deshalb hab ich ja auch das wörtchen "umkehrbar" geschrieben.)
ich mach das ganze ja in EINER schleife (direkt nacheinander) also müsste der Schlüssel schon gleich sein, aber das problem ist ja, dass bei JEDEM Schlüssel immer wieder der Anfangstext rauskommt. |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso... kann ich jetzt nicht nachvollziehen, aber guck dir mal das an:
Code: [AUSKLAPPEN] SeedRnd MilliSecs() txt$ = "hallo" While Not KeyDown(1) a = Rand( 255 ) For i = 1 To 2 txt = verschl$( txt, a ) Print txt Next WaitKey() Wend End Function verschl$( txt_in$, schl ) ln = Len( txt_in ) For i = 1 To ln txt_out$ = txt_out$ + Chr( Asc( Mid( txt_in, i, 1 ) ) Xor schl ) Next Return txt_out End Function Das wichtigste dabei ist wohl, dass man Xor nicht auf einen ganzen String, sondern immer nur auf die einzelnen Zeichen anwenden kann. |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab kein problem mit dem Xoren an sich (das hab ich schon oft genug gemacht), sondern damit, dass wenn ich es 2 mal in einer schleife tute (was leider nötig ist) es beim 2. mal nicht mehr richtig funktioniert.
EDIT: deswegen meld ich mich hier ja auch, da ich es selbst überhaupt nicht verstehe, wieso das so ist. (und ich habs auch schon selbst versucht, aber es wird nur einfach nix...) |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es ist ja absolut logisch dass wenn du in einer schleife 2mal hintereinander Xorst dass du dann wieder den Ursprungstext hast.
((text Xor x) xorx) = text. Daher ist das 2e xoren absolut unnötig. Wenn du was anderes meinst, sag genauer worum es geht. mach ein Beispiel. So ist nämlich nicht zu erkennen was zum Geier du jetzt wirklich willst ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Frigi, du lallst ![]() Also ich habe jetzt einige Minuten nachgedacht und bin zum Schluss gekommen, dass du eigentlich folgendes Problem hast: Du willst, wohl zu testzwecken, einen Text mittels Xor verschlüsseln und wieder entschlüsseln, selbstverständlich benutzt du dafür die selbe Routine mit dem selben Schlüssel, doch trotzdem wird der verschlüsselte Text nicht wieder in den Ursprungstext hach ne ich dummerchen hast ja geschrieben dass immer wieder der Anfangstext erscheint... hmm, dumm ![]() Ok nochmal von Vorne.... Du verschlüsselst einen Text - entschlüsselst ihn - und irgendwas stimmt damit nicht.... Doch bitte was? ![]() ![]() Darf man darum bitten, deinen Code, oder Teile davon, zu sehen, um deine Vorgehensweise nachvollziehen zu können? MfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es soll am Ende mal ein Brute-Force-Tool zum knacken von Xor-Verschlüsselungen werden. Ich hatte mir das so gedacht: Zuerst wird der verschlüsselte Text geXort und dann wird diese "Verschlüsselung" (wenn der richtige Schlüssel gefunden ist, wird der Text ja entschlüsselt) ebenfalls geXort. Am Schluss wollte ich dann den Ursprungstext mit dem 2. geXorten vergleichen -> wenn beide übereinstimmen hat man den schlüssel.
Hoffentlich ist es jezt so verständlicher. EDIT: der Code: Code: [AUSKLAPPEN] For key=1 To 15 ;nur zum testen
For I=1 To Len(txt$) Code$ = Code$ + Chr$(Asc(Mid$(txt$,I,1)) Xor key) Next For II=1 To Len(Code$) Code2$ = Code2$ + Chr$(Asc(Mid$(Code$,II,1)) Xor key) Next Next |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso jup jetzt gehts...
Ok ich erklärs mal so: Wenn du den verschlüsselten String mit einem falschen Key xorst, entsteht dabei eine Zeichenkette, die, wiederum mit dem falschen Key gexort, wieder die Ursprungszeichenkette erzeugt. Ich muss dich also enttäuschen, da mit deiner überlegung der richtige Schlüssel nicht gefunden werden kann. kleines Beispiel: Nehmen wir an, jemand hat den Buchstaben "A" mit einem unbekannten Schlüssel verschlüsselt, dabei entstand der verschlüsselte Code "W". Jetzt könntest du natürlich "A" mit "W" xoren, um auf den Schlüssel zu kommen, du kennst allerdings "A" nicht. Also fängst du unten an mit deiner Routine und xorst "W" mit dem ASCII-Code 001, dabei entsteht dann der Code "@", welches allerdings mit dem Schlüssel ASCII-Code 001 wieder zu "W" wird, obwohl der "richtige" Schlüssel eigentlich der ASCII-Code 022 wäre. Da du ja, durch die zweite Anwendung von XOR die erste quasi rückgängig machst, ist also dein test-Schlüssel immer zutreffend. Sorry für die erschütternde Nachricht ![]() MfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Omg, daran hatte ich nicht gedacht, danke. (irgentwie is das wahnsinnig logisch ![]() Mal schaun, ob mir was anderes einfällt...sonst muss ich mich wohl mit meinem Verschlüssler begnügen. ![]() |
||
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nach meinem "Blackout" von gestern hab ich mich wieder erhohlt, und gleich mal ne neu Idee^^:
Der verschlüsselte Text wird mit irgentwelchen schlüsseln geXort und im Ergebnis nach Klartextwörtern gesucht. wenn eine Übereinstimmung da ist, hat man schonmal gute Karten, dass ein passender Schlüssel gefunden ist. (Funktioniert bis jezt auch ganz gut.) Eine andere möglichkeit wäre auch, nicht den Text, sondern das Wort nach dem gesucht wird zu verschlüsseln und dann zu vergleichen. (Noch nicht ausprobiert.) |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja nach klartext zu suchen ist bestimmt das einfachste und wohl auch beste Verfahren.
Die andere Möglichkeit ist bestimmt auch denkbar, allerdings musst du da ja genau wissen, nach welchem Wort du suchst. Voraussetzung ist auch, dass eine einfache XOR-Verschlüsselung, die durchs Band hindurch ein und der selbe Schlüssel auf jedes Zeichen im String anwendet, benutzt wurde . Und bitte, vergiss nicht, wenn dies der Fall ist, hast du bei der ersten Variante nach spätestens 256 Versuchen die Richtige Zeichenkette gefunden... MfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab ich nicht vergessen ![]() Die 2. Variante ist meiner Meinung nach das Beste! nach wenigen ms hab ich schon alles was ich will. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group