Verschlüsselung
-
doch schon. ich schreibe zeichenweise in den string sobald ich an so was stoße wie (char)0 wird das als \0 angesehen und die kette beendet..
-
enno-tyrant schrieb:
versteh deine frage nicht: '0' != '\0'
'0' != 0
0 == '\0'Du solltest das vorher abfangen, und dann halt, verhindern.
Devil
-
War doch eigentlich recht unmissverständlich, was der da geschrieben hat.
EXOR-Verschlüsselung:
| v Input HALLOBALLO Key TAGTAGTAGT --------------- A 065 01000001 ^ A 065 01000001 ---------------- \0 000 00000000
Um das Problem zu Umgehen, könntest du entweder die Länge deines Strings immer irgendwo bereithalten und die Stringfunktionen dann eben nicht anwenden sondern es nur wie jedes andere Array auch behandeln, oder du codierst deinen verschlüsselten String in Base64, dann ist er auch auf dem Bildschirm ausgebbar und Sonderzeichen können keine Probleme mehr machen.
Btw, sofern du wirklich EXOR-Verschlüsselung verwenden willst und das nicht nur ein Beispiel war, solltest du davon lieber absehen, da es nicht gerade ein "aktueller Algorithmus" ist. Es lässt sich nämlich ziemlich leicht entschlüsseln, wenn dem Angreifer ein Teil der verschlüsselten Daten bekannt ist, der mindestens so lang wie dein Schlüssel ist.
-
Ja klar das könnte ich abfragen ist ja kein Problem nur was mach ich dann damit. muss das Ergebnis ja irgendwie in dem Output-String speichern und jedes andere Zeichen zwischen 1 und 255 wird von der Entschlüsselungsroutine als "konventionell" verschlüsseltes Zeichen interpretiert und somit falsch entschlüsselt. Irgendwie müsste ich die 0 reinschreiben nur dann bricht der String ab.
-
Gut, also erstmal danke für die Antwort, denke das ist hilfreich, werd
es mal mit Base64 versuchen. Das mit XOR war nur ein Beispiel, da das Prob
ja bei jedem anderen Algo auch auftritt. Wollte Blowfish, AES und DES
verwenden, vielleicht noch ein paar weniger bekannte Blockchiffren.
-
Du hast einen Buffer (also dein Stringarray, das ja aber jetzt "kaputt" ist weil zwischendurch Nullzeichen vorkommen) und deine gespeicherte Größe. Wenn du jetzt eine Schleife von 0 bis size-1 durchlaufen lässt und mit dem richtigen Key wieder entschlüsselst, wird aus deinem Nullzeichen ja wieder ein A, das du ursprünglich hattest. Das einzige Nullzeichen ist damit nur noch am Ende und dein String ist wieder "repariert"
-
Ja klar nur das der Algorithmus nach dem Nullzeichen nicht mehr in einen (bereits) abgeschlossenen String schreiben kann, was bedeutet dass ich so oder so nach der 0 nichts mehr hab. Die 0 würd halt noch richtig entschlüsselt, nur da danach nichts mehr steht, hört dann der Outputstring doch eh auf...
-
Wie sieht denn deine Verschlüsselungsfunktion aus? So lange du keine Stringfunktionen verwendest sondern nur mit normaler Arraysyntax darauf zugreifst, brauchen dich die Nullzeichen zwischendurch ja nicht zu interessieren, so lange du im Speicher bleibst, der dir gehört
-
Ja stimmt hast Recht. Ich schreib mit der Verschlüsselungsfunktion direkt in eine Zeichenkette. Ich müsste einfach in ein short int array schreiben und dann value-by-value in einer Schleife überprüfen wie der Wert aussieht und obs ne Null ist oder nicht etc. bzw müsste ich gar nicht mal... Nur um das später schön in ner Datei zu speichern werd ich dann wohl dieses Array in Byte64 konvertieren, das sieht ganz nett aus
werd mich mal damit befassen
-
Nimm ein Array ausreichender Länge, dann passiert das nicht.
Gruss Jerry