Wie verschlüsselt man einen String
-
Denke erst mal
Ich hab alles kapiert bis auf das mit dem Zweierkomplement (ich weiß ich bin dumm) 1 und 0 geht ja noch aber was ist z.B. mit 'G' oder '?' oder auch '5442114' ?
Köntest du mir bitte bitte mal ein Beispiel schreiben? , wäre echt nett
-
na bei einem computer ist alles binär aufgebaut!
Auch ein "G" interpretiert der computer als eine reihe von 0en und 1en, und für das "G" werden dann eben die 0 und 1 getauscht, und somit entsteht ein ganz anderes zeichen!
-
Ganz einfach: Ein Zeichen wie 'G' wird intern auch als Bitfolge dargestellt, also kannst du jedes Bit einzeln umkehren:
'G' = 71 = 0100 0111(b) => 1011 1000(b) = 184 = '¸' (irgendein Sonderzeichen des erweiterten Zeichensatzes)
-
OK , Danke das hab ich jetzt kapiert aber wie man das macht noch nicht.
Ne kurze Erklärung währe super!
-
(*******) schrieb:
OK , Danke das hab ich jetzt kapiert aber wie man das macht noch nicht.
Was hast du jetzt kapiert und was nicht?
Wie gesagt: Der ~-Operator bildet für builtins das Zweierkomplement. Wie das vonstatten geht, siehe CStolls Post oder aber auch einfach mal in der wikipdia.
Dazu mal ein kompilierbares Minimalbeispiel:
#include <iostream> #include <string> using namespace std; int main() { string s("Hallo Welt!"); // Original String... for(size_t i = 0, end = s.length(); i < end; ++i) s[i] = ~s[i]; // Das 2-Komplement von s[i] bilden. cout << "\ns = " << s << endl; // der "verschlüsselte" string... for(size_t i = 0, end = s.length(); i < end; ++i) s[i] = ~s[i]; // Nochmal das 2-Komplement von s[i] bilden. Jetzt enthält s[i] wieder den Ursprungswert. cout << "s = " << s << endl; // der ursprungs string... }Gruß Caipi
-
(*******) schrieb:
OK , Danke das hab ich jetzt kapiert aber wie man das macht noch nicht.
Ne kurze Erklärung währe super!
Schau Dir mal mein Postiung in diesen Thread an. Da ist erklärt wie das geht, was Du vorhast.
:xmas2: Werner
-
Hallo,
das sind aber alles unsichere Verfahren.Ein sicheres Verfahren wäre z.B. xTEA:
http://en.wikipedia.org/wiki/XTEA
Dabei wandelt man einen 8-Zeichen langen Text so in 2 Integer/Long-Variablen um:
v[0] = ch[0]+(ch[1]<<8)+(ch[2]<<16)+(ch[3]<<24);
v[1] = ch[4]+(ch[5]<<8)+(ch[6]<<16)+(ch[7]<<24);Der Key (k) ist ein Long-Array, mit 4 Long-Zahlen, kann ebenfalls wie oben aus einem String berechnet werden.
-
Caipi schrieb:
Wie gesagt: Der ~-Operator bildet für builtins das Zweierkomplement.
Einerkomplement - mach dir mal den Unterschied klar
(z.B. unter Wikipedia
-
CStoll schrieb:
Caipi schrieb:
Wie gesagt: Der ~-Operator bildet für builtins das Zweierkomplement.
Einerkomplement - mach dir mal den Unterschied klar
(z.B. unter WikipediaDer Unterschied ist mir klar. Keine Ahnung, wieso ich desshalb (bisher) angenommen habe, dass der NOT-Operator (Der Name sagt ja eigentlich schon alles...) das Zweierkomplement bildet.
.Danke für die Berichtigung!
Gruß Caipi
-
warum den nicht einfach mit XOR?
sicherer als das zweierkomp. und doch ganz leicht