Wie verschlüsselt man einen String
-
(*******) schrieb:
Erstmal weis ich nicht was ein Zweierkomplement ist , erklär bitte mal.
Beim Komplement wird jedes Bit eines Zeichens durch sein Gegenteil ausgetauscht (btw, das da oben ist das Einerkomplement). Also wird aus einer 1 eine 0 und umgekehrt (und aus 00110100(b) wird 11001011(b)).
Wasfür Algorytmen gibt es ? Ist damit gemeint wiviel bit Verschlüsselung?

Da gibt es viel mehr als du dir vorstellen kannst, angefangen bei Cäsar-Chiffre (verschiebt jeden Buchstaben um drei Stellen im Alphabet: A wird D, B wird E,...) und Scytale (vertauscht bestimmte Buchstaben des Wortes miteinander) bis hin zu RSA (Modulo-Rechnungen mit riesigen Primzahlen - praktisch kaum zu knacken).
Erstmal ist mir nur wichtig das der Text von keinem Menschen mehr gelesen werden kan, aber erklär das andere trotzdem mal, vieleicht versteh ichs ja!

In dem Fall reicht wohl etwas einfacheres, z.B. die obige Komplement-Darstellung.
(dein Quell funktionirt nicht 5 unerklärliche Fehler?!?)
Wenn du dazuschreibst, was für Fehler, kann dir auch geholfen werden (könnte aber daran liegen, daß du einige Header vergessen hast).
-
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