Verschlüsselung und Entschlüsselung
-
Hallo,
so ich wollte ein kleines Programm schreiben, das ein Wort bzw mehrere Wörter verschlüsselt.
Die verschlüsselung läuft eigentlich immer einem gleichen algorythmus ab, der wie folgt aussieht
Also man nehme das Wort: Hallo
die verschlüsselungs reihenfolge sieht so aus:
12232231231231221223das heisst in der verschlüsselung ist der 1. H der 2. buchstabe wird dann 2 weiter folgen und dann wieder 2, dann 3....
Hbaulrwlfo <-- so sieht hallo verschlüsselt aus.
nun möchte ich fragen wie ich das anstellen kann, das es genau nach dem rythmus das zusammenwerkelt und die buchstaben die einfach so hinzugefügt werden einfach so ausgewöhlt werden ohne bestimmten ablauf und so.
am ende soll das in einer Datei gespeichert werden.
wenn ein wort bzw satz die zahlenreihenfolge überschreitet, sollte einfach eine zweite datei gemacht werden.--
Beim decrypter muss er einfach die datei(en) laden und dann den normalen text ausgeben, wie würde das dann funktionieren?
-
das heisst in der verschlüsselung ist der 1. H der 2. buchstabe wird dann 2 weiter folgen und dann wieder 2, dann 3....
Ein bisschen wurstig beschrieben aber ich denke, ich habe es verstanden.
Außerdem ist ein Verschlüsselungsalgorithmus, der die Datenmenge vergrößert nicht gerade schön. Kann man sich ja mal bei Festplattenverschlüsselung vorstellen, bei der für 50GB verschlüsselte Nutzdaten 50GB Verschlüsselungsmüll gespeichert werden würde.Zum Verschlüsseln läufst du einfach über alle Zeichen deiner Ursprungs-Zeichenkette und fügst vor dem eigentlichen Zeichen shiftwert-1 zufällige Zeichen ein, die du mit
((rand()%25)+98)
erzeugen könntest.
Zum Entschlüsseln läufst du zeichenweise über deine verschlüsselte Zeichenkette und zwar immer in der Schrittweite, die in deiner Verschiebe-Liste an aktueller Position angegeben ist. Dieses Zeichen kopierst du dann ans Ende eines neuen Strings, der dann zum Schluss entschlüsselt ist.
-
#include<vector> #include<string> #include<cstdlib> string verschluesseln (const string &klartext, const vector<int> &schluessel) { string chiffre; vector<int>::iterator is=schluessel.begin(); for(string::iterator ik=klartext.begin(); ik!=klartext.end(); ++ik} { chiffre.push_back(*ik); for(int i=0; i<*is; i++) chiffre.push_back(static_cast<char>('a'+rand()%26)); if(is==schluessel.end()) is=schluessel.begin(); else ++is; } return chiffre; }
oder so ähnlich...
-
Lerneffekt *klingel*
-
masterofx32 schrieb:
Lerneffekt *klingel*
das sagen sie alle, nachden ich für sie die arbeit gemacht habe