Daten Verschlüsseln
-
Hi!
Ich hatte vor längerer Zeit hier im Forum mal einen Programmcode gefunden, der Texte ganz einfach verschlüsselt, indem er die 0en zu 1en und umgekehrt im Dezimalcode macht. Ich finde leider diesen Beitrag nichtmehr.Wäre sehr nett wenn einer mir nochmal erklären könnte wie das funktioniert.
-
Falls du auf binäre Invertierung hinauswillst, geht das recht einfach mit XOR:
Text[jedes Zeichen behandeln] ^= 0xff
Mit komplexeren Schlüsseln (mehrere Bytes lang und nicht alle Bits gesetzt) erreicht man mehr Sicherheit.
-
also ich meinte das so, wenn man jetzt ein A verschlüsselt:
ein A besteht ja aus so einem dezimalcode. Mal angenommen er würde 0001 lauten. Dann würde das Programm daraus 1110 amchen. Also die einsin zu nullen und umgekehrt. Wie egth das konkret? ic habe keine Ahnung wie man von den einzelnen Buschstaben den dezimalcade abfragt. Bei dem Codeschnipsel den ich hier mal im board gefunden habe war das sehr simpel und kurz.
-
Das Ding mit den Einsen und Nullen heißt Binärcode du Depp.
Lösung bereits oben:
char x = 'A'; x ^= 0xff;
-
Oder so für mehren Zeichen (strings):
#include <iostream> void Invert(char& c) { c = ~c; } int main() { std::string text = "Hallo!"; std::cout << text << std::endl; std::for_each(text.begin(), text.end(), Invert); std::cout << text << std::endl; }Zur Funktionsweise:
http://www.pronix.de/pronix-676.htmlmfg.
edit: hab's auf die methode von swordfish geändert.
-
Da brauchst nix umzuwandeln, denn char ist ein Werttyp (signed char: –128 bis 127; unsigned char: 0 bis 255) Du kannst sozusagen mit Zeichen rechnen:
char ch = 'A'; // 65, 0x41, 01000001 ch = ~ch; // invertiert: 190, 0xBE, 10111110Greetz, Swordfish
-
joomoo schrieb:
Oder so für mehren Zeichen (strings):
//[...] void Invert(char& c) { c ^= 0xff; } //[...]Inline?, wär doch sinnvoll

-
Jeweils ein Zeichen eines Passworts anstatt 0xff zu verwenden ist sicherer.
-
CodeFinder schrieb:
joomoo schrieb:
Oder so für mehren Zeichen (strings):
//[...] void Invert(char& c) { c ^= 0xff; } //[...]Inline?, wär doch sinnvoll

macht mein compiler

-
@CodeFinder: Naja, bei for_each() musst 'ne Funktion angeben.
Greetz, Swordfish
PS: Ich frag mich grad', warum so viele Leute den Wert mit sich selbst XORen um ihn zu Invertieren, wenn's doch mit not (~) auch geht (mit einem Speicherzugriff)...
-
Swordfish schrieb:
@CodeFinder: Naja, bei for_each() musst 'ne Funktion angeben.
Hä? ...for_each() ?? ...*im-kreis-dreh*

PS: Was laabert Ranner eingtl. schon wieder für ne Kagge...(WinAPI-Forum) ..tze, tze, tze

-
Naja, joomoo hat's so gemacht:
joomoo schrieb:
Oder so für mehren Zeichen (strings):
#include <iostream> void Invert(char& c) { c = ~c; } int main() { std::string text = "Hallo!"; std::cout << text << std::endl; std::for_each(text.begin(), text.end(), Invert); std::cout << text << std::endl; }darauf du:
CodeFinder schrieb:
joomoo schrieb:
Oder so für mehren Zeichen (strings):
//[...] void Invert(char& c) { c ^= 0xff; } //[...]Inline?, wär doch sinnvoll

geht aber bei for_each() nicht inline... Oder wie hast du mich verstanden?
joomoo schrieb:
edit: hab's auf die methode von swordfish geändert.
Brav

Greetz, Swordfish
PS: ja, Ranner aka Jochen geht mir in letzter Zeit schön aufn Keks...

-
Willst du sagen, dass 'Invert'
CodeFinder schrieb:
joomoo schrieb:
//[...] void Invert(char& c) { c ^= 0xff; } //[...]Inline?, wär doch sinnvoll

nicht inline deklarierbar ist ?
Swordfish schrieb:
geht aber bei for_each() nicht inline.
Oho...oder versteh ich dich grad ganz falsch

-
Freilich kannst es als inline deklarieren. Ich bezweifle nur, dass der Compiler es inline macht, wenn du davon die Adresse nimmst.
Greetz, Swordfish
PS: Kann mich auch teuschen, glaub' ich aber nicht. *hehe*
-
Macht aus der Funktion einen Funktor und es wird evtl. wirklich inline.
-
Swordfish schrieb:
Freilich kannst es als inline deklarieren. Ich bezweifle nur, dass der Compiler es inline macht, wenn du davon die Adresse nimmst.
Greetz, Swordfish
Naja das überlass ich meinem Compiler

Swordfish schrieb:
PS: Kann mich auch teuschen, glaub' ich aber nicht. *hehe*
Oho der Meister im Gewand

-
Swordfish schrieb:
PS: Ich frag mich grad', warum so viele Leute den Wert mit sich selbst XORen um ihn zu Invertieren, wenn's doch mit not (~) auch geht (mit einem Speicherzugriff)...
Der Titel lautet "Daten Verschlüsseln", was man z.B. mit XOR macht. Wenn man irgendwas nur invertiert, ob mit XOR oder NOT, dann hat das nicht viel mit verschlüsseln zu tun.
-
Titel schrieb:
Swordfish schrieb:
PS: Ich frag mich grad', warum so viele Leute den Wert mit sich selbst XORen um ihn zu Invertieren, wenn's doch mit not (~) auch geht (mit einem Speicherzugriff)...
Der Titel lautet "Daten Verschlüsseln", was man z.B. mit XOR macht. Wenn man irgendwas nur invertiert, ob mit XOR oder NOT, dann hat das nicht viel mit verschlüsseln zu tun.
toll. aber die frage entspricht nicht ganz dem titel, denn dort geht es um invertieren.
-
In der Frage steht einmal was von verschlüsseln und dann was von invertieren. Wie das zusammen passt hab ich ja schon gesagt.