c++ ver-/entschluesselung

Von: , Frage gestellt am Mi, 21. Jan 2009

hallo,
ich bin ein absoluter neuling im forum wie auch bei c++.
mein erstes programm war ein taschenrechner(simpel programmiert), der vor der benutzung den benutzernamen und das passende passwort abgefragt hat...
jetzt habe ich mich an etwas interessanteres gemacht: verschlüsselung
ich habe im netz schon mehr darüber gelesen, hab aber immer nur bahnhof verstanden, da mir die meisten befehle fremd waren.
jetzt bin ich bei einer simplen "zeichen-durch-zahlen-ersetzen-verschlüsselung" angelangt, habe bei den feinheiten aber noch probleme:

wenn ich in meinem verschlüsselungsprogramm "ab" eingebe, gibt er mir folgendes aus:
a(verschlüsselt)
b(verschlüsselt)
ich hätte gerne, dass er es in einer zeile ausgibt und am besten gleich in einer .txt-datei speichert.

gebe ich aber das oben gewünschte ergebnis in mein entschlüsselungsprogramm ein, so passiert NICHTS
weshalb? wie kann ich das problem beheben?

gebe ich das verschlüsselte in mehreren zeilen ein, gibt er mir das aus:
a(verschlüsselt)
a
b(verschlüsselt)
b
kann ich nicht zuerst a(verschlüsselt)b(verschlüsselt)eingeben und das ergebnis dann auch in einer zeile ausgegeben bekommen?

in ferner zukunft sollte die verschlüsselung noch mutieren, was jedoch mein LANGZEITZIEL ist und momentan nebensächlich

könnt ihr mir helfen? ich bin gerne bereit eure tipps auszuprobieren, soweit ich sie verstehe, wäre euch aber auch dankbar, wenn ihr mir auch code posten würdet.

das programm ist wirklich simpel, macht euch bitte nicht lustig darüber!

------------------------------------------------------------------

quellcode(verschlüsselung):

#include <iostream>
#include <string>
using namespace std;

int main()
{
string p;
cin >> p;//passworteingabe
if(p == "passwort")//passwort
{

int counter = 0;
while (counter >= 0)
{
counter++;

char zeichen;

cin >>zeichen;// eingabe des zu verschlüsselnden textes


//1. zeichen=anfang: start (1)
//2. zeichen=beschreibung: grossbuchstabe, kleinbuchstabe, zeichen, zahl (33, 22, 32, 23)
//3.&4. zeichen=information: letter/ziffer (4, 5, 6, 7, 8, 9)
//5. zeichen=ende: schluss (0)

if (zeichen == 'a'){cout << 122440 << endl;}// "a" wird durch "122440" ersetzt
if (zeichen == 'b'){cout << 122450 << endl;}
if (zeichen == 'c'){cout << 122460 << endl;}
if (zeichen == 'd'){cout << 122470 << endl;}
if (zeichen == 'e'){cout << 122480 << endl;}
if (zeichen == 'f'){cout << 122490 << endl;}
if (zeichen == 'g'){cout << 122540 << endl;}
if (zeichen == 'h'){cout << 122550 << endl;}
if (zeichen == 'i'){cout << 122560 << endl;}
if (zeichen == 'j'){cout << 122570 << endl;}
if (zeichen == 'k'){cout << 122580 << endl;}
if (zeichen == 'l'){cout << 122590 << endl;}
if (zeichen == 'm'){cout << 122640 << endl;}
if (zeichen == 'n'){cout << 122650 << endl;}
if (zeichen == 'o'){cout << 122660 << endl;}
if (zeichen == 'p'){cout << 122670 << endl;}
if (zeichen == 'q'){cout << 122680 << endl;}
if (zeichen == 'r'){cout << 122690 << endl;}
if (zeichen == 's'){cout << 122740 << endl;}
if (zeichen == 't'){cout << 122750 << endl;}
if (zeichen == 'u'){cout << 122760 << endl;}
if (zeichen == 'v'){cout << 122770 << endl;}
if (zeichen == 'w'){cout << 122780 << endl;}
if (zeichen == 'x'){cout << 122790 << endl;}
if (zeichen == 'y'){cout << 122840 << endl;}
if (zeichen == 'z'){cout << 122850 << endl;}
if (zeichen == 'A'){cout << 133440 << endl;}
if (zeichen == 'B'){cout << 133450 << endl;}
if (zeichen == 'C'){cout << 133460 << endl;}
if (zeichen == 'D'){cout << 133470 << endl;}
if (zeichen == 'E'){cout << 133480 << endl;}
if (zeichen == 'F'){cout << 133490 << endl;}
if (zeichen == 'G'){cout << 133540 << endl;}
if (zeichen == 'H'){cout << 133550 << endl;}
if (zeichen == 'I'){cout << 133560 << endl;}
if (zeichen == 'J'){cout << 133570 << endl;}
if (zeichen == 'K'){cout << 133580 << endl;}
if (zeichen == 'L'){cout << 133590 << endl;}
if (zeichen == 'M'){cout << 133640 << endl;}
if (zeichen == 'N'){cout << 133650 << endl;}
if (zeichen == 'O'){cout << 133660 << endl;}
if (zeichen == 'P'){cout << 133670 << endl;}
if (zeichen == 'Q'){cout << 133680 << endl;}
if (zeichen == 'R'){cout << 133690 << endl;}
if (zeichen == 'S'){cout << 133740 << endl;}
if (zeichen == 'T'){cout << 133750 << endl;}
if (zeichen == 'U'){cout << 133760 << endl;}
if (zeichen == 'V'){cout << 133770 << endl;}
if (zeichen == 'W'){cout << 133780 << endl;}
if (zeichen == 'X'){cout << 133790 << endl;}
if (zeichen == 'Y'){cout << 133840 << endl;}
if (zeichen == 'Z'){cout << 133850 << endl;}
if (zeichen == '0'){cout << 123440 << endl;}
if (zeichen == '1'){cout << 123450 << endl;}
if (zeichen == '2'){cout << 123460 << endl;}
if (zeichen == '3'){cout << 123470 << endl;}
if (zeichen == '4'){cout << 123480 << endl;}
if (zeichen == '5'){cout << 123490 << endl;}
if (zeichen == '6'){cout << 123540 << endl;}
if (zeichen == '7'){cout << 123550 << endl;}
if (zeichen == '8'){cout << 123560 << endl;}
if (zeichen == '9'){cout << 123570 << endl;}
if (zeichen == '.'){cout << 132440 << endl;}
if (zeichen == ','){cout << 132450 << endl;}
if (zeichen == '?'){cout << 132460 << endl;}
if (zeichen == '!'){cout << 132470 << endl;}
if (zeichen == ':'){cout << 132480 << endl;}
if (zeichen == '"'){cout << 132490 << endl;}
if (zeichen == '&'){cout << 132540 << endl;}
if (zeichen == '('){cout << 132550 << endl;}
if (zeichen == ')'){cout << 132560 << endl;}
if (zeichen == '/'){cout << 132570 << endl;}
if (zeichen == ';'){cout << 132580 << endl;}
}
}
return 0;
}

--------------------------------------------------------------------

quellcode (entschlüsselung):

#include <iostream>
#include <string>
using namespace std;

int main()
{
int counter = 0;
while (counter >= 0)
{
string s1;
cin >> s1;//eingabe des zu entschlüsselnden textes

if (s1 == "122440"){cout << "a" << endl;}// "122440" wird durch "a" ersetzt (enschlüsselt)
if (s1 == "122450"){cout << "b" << endl;}
if (s1 == "122460"){cout << "c" << endl;}
if (s1 == "122470"){cout << "d" << endl;}
if (s1 == "122480"){cout << "e" << endl;}
if (s1 == "122490"){cout << "f" << endl;}
if (s1 == "122540"){cout << "g" << endl;}
if (s1 == "122550"){cout << "h" << endl;}
if (s1 == "122560"){cout << "i" << endl;}
if (s1 == "122570"){cout << "j" << endl;}
if (s1 == "122580"){cout << "k" << endl;}
if (s1 == "122590"){cout << "l" << endl;}
if (s1 == "122640"){cout << "m" << endl;}
if (s1 == "122650"){cout << "n" << endl;}
if (s1 == "122660"){cout << "o" << endl;}
if (s1 == "122670"){cout << "p" << endl;}
if (s1 == "122680"){cout << "q" << endl;}
if (s1 == "122690"){cout << "r" << endl;}
if (s1 == "122740"){cout << "s" << endl;}
if (s1 == "122750"){cout << "t" << endl;}
if (s1 == "122760"){cout << "u" << endl;}
if (s1 == "122770"){cout << "v" << endl;}
if (s1 == "122780"){cout << "w" << endl;}
if (s1 == "122790"){cout << "x" << endl;}
if (s1 == "122840"){cout << "y" << endl;}
if (s1 == "122850"){cout << "z" << endl;}
if (s1 == "133440"){cout << "A" << endl;}
if (s1 == "133450"){cout << "B" << endl;}
if (s1 == "133460"){cout << "C" << endl;}
if (s1 == "133470"){cout << "D" << endl;}
if (s1 == "133480"){cout << "E" << endl;}
if (s1 == "133490"){cout << "F" << endl;}
if (s1 == "133540"){cout << "G" << endl;}
if (s1 == "133550"){cout << "H" << endl;}
if (s1 == "133560"){cout << "I" << endl;}
if (s1 == "133570"){cout << "J" << endl;}
if (s1 == "133580"){cout << "K" << endl;}
if (s1 == "133590"){cout << "L" << endl;}
if (s1 == "133640"){cout << "M" << endl;}
if (s1 == "133650"){cout << "N" << endl;}
if (s1 == "133660"){cout << "O" << endl;}
if (s1 == "133670"){cout << "P" << endl;}
if (s1 == "133680"){cout << "Q" << endl;}
if (s1 == "133690"){cout << "R" << endl;}
if (s1 == "133740"){cout << "S" << endl;}
if (s1 == "133750"){cout << "T" << endl;}
if (s1 == "133760"){cout << "U" << endl;}
if (s1 == "133770"){cout << "V" << endl;}
if (s1 == "133780"){cout << "W" << endl;}
if (s1 == "133790"){cout << "X" << endl;}
if (s1 == "133840"){cout << "Y" << endl;}
if (s1 == "133850"){cout << "Z" << endl;}
if (s1 == "123440"){cout << "0" << endl;}
if (s1 == "123450"){cout << "1" << endl;}
if (s1 == "123460"){cout << "2" << endl;}
if (s1 == "123470"){cout << "3" << endl;}
if (s1 == "123480"){cout << "4" << endl;}
if (s1 == "123490"){cout << "5" << endl;}
if (s1 == "123540"){cout << "6" << endl;}
if (s1 == "123550"){cout << "7" << endl;}
if (s1 == "123560"){cout << "8" << endl;}
if (s1 == "123570"){cout << "9" << endl;}
if (s1 == "132440"){cout << "." << endl;}
if (s1 == "132450"){cout << "," << endl;}
if (s1 == "132460"){cout << "?" << endl;}
if (s1 == "132470"){cout << "!" << endl;}
if (s1 == "132480"){cout << ":" << endl;}
if (s1 == "132490"){cout << """" << endl;}
if (s1 == "132540"){cout << "&" << endl;}
if (s1 == "132550"){cout << "(" << endl;}
if (s1 == "132560"){cout << ")" << endl;}
if (s1 == "132570"){cout << "/" << endl;}
if (s1 == "132580"){cout << ";" << endl;}
}
return 0;
}

15 Antworten zu dieser Frage

  1. Antwort von nach 14 Stunden 0 hilfreich
    Re: c++ ver-/entschluesselung

    Hi Feuerklinge.
    Wenn du bei deiner "Entschlüsselung" alles hintereinander schreibst, wird alles bis die ganze Linie als ein String angesehen. Das Programm tut also genau das was du ihm sagst. Da der eingegebene String mit keinem vorgegebenen String übereinstimmt, tut es nichts. ;)
    Gibst die die "verschlüsselten" Zeichen Zeilenweise ein, stimmt der eingegebene String mit einer der Vorgaben überein, und das Zeichen wird ausgegeben.
    Als einfache Lösung könntest du den eingegebenen String auf Leerzeichen hin durchsuchen, und wenn eines gefunden wird, den String aufteilen.
    Ich hoffe geholfen zu haben.
    Gruß
    re-G

    • Antwort von nach 22 Stunden 0 hilfreich
      Re^2: c++ ver-/entschluesselung

      danke re-g
      da bin ich aber gestern auch noch selbst drauf gekommen.
      außerdem hab ich die ganzen endl; weg genommen. jetzt wird alles in einer zeile ausgegeben.
      momentan bin ich dabei zu versuchen, die ausgabe in eine datei zu speichern
      ich hab ja aber hilfe:
      a) internet
      b) einen von 6 bundessiegern informatik 2008

      ps hab die verschlüsselungszahlen verändert, damit keine regelmäßigkeit vorhanden ist.

      • Antwort von nach 3 Tagen 0 hilfreich
        Re^3: c++ ver-/entschluesselung

        Hallo, ps hab die verschlüsselungszahlen verändert, damit keine
        regelmäßigkeit vorhanden ist.
        Es ist egal, womit Du substituierst, die Art der "Verschlüsselung" bleibt gleich und damit äußerst schwach.

        Eine gute Verschlüsselung ist alles andere als einfach. Daher nutzt man dafür auch am besten fertige Bibliotheken, die entprechend bewährte Algorithmen zuverlässig umsetzen.

        Eine solche Bibliothek wäre z.B. die openSSL

        http://www.openssl.org/

        Versuche doch mal, mit Hilfe der fertigen Bibliotheken ein Programm zu schreiben, dass z.B. "blowfish" anstelle Deines Selbstbaus nutzt. Dann lernst Du mindestens genauso viel und hast hinterher eine richtige Verschlüsselung.

        Gruß

        Fritze

        • Antwort von nach 4 Tagen 0 hilfreich
          Re^4: c++ ver-/entschluesselung

          ja, danke für den tipp.
          ich denke für den autonormalverbraucher reicht meine jetztige verschlüsselung. ich will erst mein EIGENES projekt beenden, befor ich externe dateien miteinbeziehe...
          soweit ist jetzt auch alles fertig...
          nur noch ein problem:
          ich kann dateien in mein programm einlesen, die werden dann aber nicht entschlüsselt...
          und immer manuell einfügen ist eben nicht das ware...
          weiß jemand rat?

          • Antwort von nach 5 Tagen 0 hilfreich
            Re^5: c++ ver-/entschluesselung

            ich denke für den autonormalverbraucher reicht meine jetztige
            verschlüsselung.
            Dein Verschlüsselungs-Programm ist sicherlich ein schönes Projekt um programmieren zu üben. Aber um damit Daten zu schützen die auch nur im entferntesten sensitiv sind, taugt sie aber nicht. Sowas lässt sich ohne irgendwelche Probleme knacken. ich will erst mein EIGENES projekt beenden,
            befor ich externe dateien miteinbeziehe...
            Du könntest aber - wenn du was eigenes machen willst - dich ja an der Implementierung einer bekannten einfachen Verschlüsselungs-Technik versuchen.
            Z.B. könntest du damit anfangen, dass du die Caesar-Verschlüsselung implementierst. Dort wird einfach das Eingabealphabet rotiert. Wie weit rotiert wird, ist dabei das "Passwort".
            Damit kannst du zumindest schon mal mit nicht fest vorgegebenen Passwörtern verschlüsseln, und müsstest das Passwort nicht in deinem Programm abspeichern.
            http://de.wikipedia.org/wiki/Verschiebechiffre

            Beim Cäsar's Chiffre ergibt aber nach wie vor ein gleiches Wort im Eingabetext immer denselben Geheimtext, was nicht gut ist. Wenn du die Cäsar-Verschlüsselung geschafft hast, könntest du deshalb z.B. als nächstes die Vignere-Verschlüsselung probieren. Dort wird der Eingabetext mit einer Aneinanderreihung des Passwortes verknüpft. Damit ergeben gleiche Wörter im Eingabetext in der Regel nicht mehr denselben Geheimtext. Das ist schon etwas besser.
            http://de.wikipedia.org/wiki/Vigen%C3%A8re-Verschl%C...

            Wenn du auch das geschafft hast, könntest du versuchen, eine Enigma zu implementieren. Das ist schon deutlich komplexer und lässt sich schon wesentlich schwerer knacken. Hier würde ich auch zum ersten Mal überhaupt von einer halbwegs brauchbaren Verschlüsselung sprechen (natürlich ist auch das nicht für sensitive Inhalte geeignet). Allerdings ist die Implementierung einer Enigma auch schon viel schwieriger.
            http://de.wikipedia.org/wiki/Enigma

            Und: Ich würde die zu verschlüsselnde Datei Byte-weise einlesen und verschlüsseln. Dann kannst du damit auch Binär-Dateien wie z.B. Word-Dokumente oder ähnliches verschlüsseln. Bei allen oben genannten Chiffren ist dies ohne Probleme möglich.

          • Antwort von nach 4 Tagen 0 hilfreich
            Re^5: c++ ver-/entschluesselung

            Hallo, ich denke für den autonormalverbraucher reicht meine jetztige
            verschlüsselung.
            Nein, sie reicht nicht. Wozu soll sowas denn gut sein? ich will erst mein EIGENES projekt beenden,
            befor ich externe dateien miteinbeziehe...
            Ach. Aber "iostream" und "string" sind ebenfalls externe Bibliotheken. Woran machst Du denn fest, welche Du benutzten darfst und welche nicht, um ein Projekt ein "EIGENES" nennen zu dürfen? soweit ist jetzt auch alles fertig...
            nur noch ein problem:
            ich kann dateien in mein programm einlesen, die werden dann
            aber nicht entschlüsselt...
            Und das nennst Du "soweit alles fertig"? Dir wurde ja schon gesagt, woran das liegt. Du liest den gesamten verschlüsselten Text als einen einzigen String ein und vergleichst dann mit einem einzelnen Zeichen (dargestellt als sechsstellige Ziffernfolge). Dieser Vergleich scheitert, wenn der Text aus mehr als einem einzelnen Zeichen besteht. Dein Programm findet nichts zum entschlüsseln und beendet sich folgerichtig ohne weitere Ausgabe. und immer manuell einfügen ist eben nicht das ware...
            weiß jemand rat?
            Du wirst wohl nicht umhin kommen, Deinen Text "Zeichen für Zeichen" einzulesen und entsprechend zu vergleichen.

            Gruß

            Fritze

            • Antwort von nach 5 Tagen 0 hilfreich
              Re^6: c++ ver-/entschluesselung

              so, ich muss nicht jedes zeichen für zeichen einzeln eingeben!
              mein verschlüsselungsprogramm speichert eine zahl, macht ein leerzeichen und speichert die nächste zahl. folglich wird jede zahl als separatrer string erkannt und ich muss nicht wie der infomeister behauptet jedes zeichen einzeln eingeben.
              momantan bin ich dabei eine datei mit getline einzulesen und so zu entschlüsseln
              mir ist klar, dass man mein passwort sehr leicht mit einem hexeditor wegen des vergleichs auslesen kann...
              das programm ist aber nur dafür gedacht, um meine daten in der schule vor anderen schülern zu sichern
              wie viele von denen wissen denn bitteschön, dass sie das einen hexeditor benutzen müssen?


              neuer quelltext:

              #include <iostream>
              #include <string>
              #include <fstream>
              using namespace std;

              int main()
              {
              cout << " Passwort: ";
              string p;
              cin >> p;//passworteingabe
              if(p == "passwort")//passwort
              {
              int counter = 0;
              ofstream schreiben("Protokoll.txt");//datei, in die verschlüsselt wird
              while (counter >= 0)
              {

              counter++;

              char zeichen;

              cin >> zeichen;// eingabe des zu verschlüsselnden textes

              //verschluesselung:
              //1. zeichen=anfang: start (1)
              //2. zeichen=beschreibung: kleinbuchstabe, grossbuchstabe, zahl, sonderzeichen (2, 3, 4, 5)
              //3.&4. zeichen=information: kodiertes zeichen (zufaellig!) (2, 3, 4, 5, 6, 7, 8, 9)
              //5. zeichen=ende: schluss (0)


              if (zeichen == 'a'){cout << 124520 ; schreiben<<"124520"; }// "a" wird durch "124520" ersetzt und "124520" in datei geschrieben
              if (zeichen == 'b'){cout << 123320 ; schreiben<<"123320"; }
              if (zeichen == 'c'){cout << 125320 ; schreiben<<"125320"; }
              if (zeichen == 'd'){cout << 123820 ; schreiben<<"123820"; }
              if (zeichen == 'e'){cout << 122320 ; schreiben<<"122320"; }
              if (zeichen == 'f'){cout << 122720 ; schreiben<<"122720"; }
              if (zeichen == 'g'){cout << 124220 ; schreiben<<"124220"; }
              if (zeichen == 'h'){cout << 123620 ; schreiben<<"123620"; }
              if (zeichen == 'i'){cout << 124720 ; schreiben<<"124720"; }
              if (zeichen == 'j'){cout << 122520 ; schreiben<<"122520"; }
              if (zeichen == 'k'){cout << 125620 ; schreiben<<"125620"; }
              if (zeichen == 'l'){cout << 122220 ; schreiben<<"122220"; }
              if (zeichen == 'm'){cout << 124820 ; schreiben<<"124820"; }
              if (zeichen == 'n'){cout << 123720 ; schreiben<<"123720"; }
              if (zeichen == 'o'){cout << 123220 ; schreiben<<"123220"; }
              if (zeichen == 'p'){cout << 124920 ; schreiben<<"124920"; }
              if (zeichen == 'q'){cout << 123920 ; schreiben<<"123920"; }
              if (zeichen == 'r'){cout << 122620 ; schreiben<<"122620"; }
              if (zeichen == 's'){cout << 124420 ; schreiben<<"124420"; }
              if (zeichen == 't'){cout << 123520 ; schreiben<<"123520"; }
              if (zeichen == 'u'){cout << 125520 ; schreiben<<"125520"; }
              if (zeichen == 'v'){cout << 124620 ; schreiben<<"124620"; }
              if (zeichen == 'w'){cout << 122920 ; schreiben<<"122920"; }
              if (zeichen == 'x'){cout << 123420 ; schreiben<<"123420"; }
              if (zeichen == 'y'){cout << 125420 ; schreiben<<"125420"; }
              if (zeichen == 'z'){cout << 122420 ; schreiben<<"122420"; }
              if (zeichen == 'ä'){cout << 125220 ; schreiben<<"125220"; }
              if (zeichen == 'ö'){cout << 125720 ; schreiben<<"125720"; }
              if (zeichen == 'ü'){cout << 122820 ; schreiben<<"122820"; }
              if (zeichen == 'ß'){cout << 124320 ; schreiben<<"124320"; }
              if (zeichen == 'A'){cout << 133420 ; schreiben<<"133420"; }
              if (zeichen == 'B'){cout << 132720 ; schreiben<<"132720"; }
              if (zeichen == 'C'){cout << 134820 ; schreiben<<"134820"; }
              if (zeichen == 'D'){cout << 134220 ; schreiben<<"134220"; }
              if (zeichen == 'E'){cout << 133620 ; schreiben<<"133620"; }
              if (zeichen == 'F'){cout << 132420 ; schreiben<<"132420"; }
              if (zeichen == 'G'){cout << 133220 ; schreiben<<"133220"; }
              if (zeichen == 'H'){cout << 134620 ; schreiben<<"134620"; }
              if (zeichen == 'I'){cout << 135420 ; schreiben<<"135420"; }
              if (zeichen == 'J'){cout << 132320 ; schreiben<<"132320"; }
              if (zeichen == 'K'){cout << 134420 ; schreiben<<"134420"; }
              if (zeichen == 'L'){cout << 134920 ; schreiben<<"134920"; }
              if (zeichen == 'M'){cout << 135620 ; schreiben<<"135620"; }
              if (zeichen == 'N'){cout << 133320 ; schreiben<<"133320"; }
              if (zeichen == 'O'){cout << 134320 ; schreiben<<"134320"; }
              if (zeichen == 'P'){cout << 132920 ; schreiben<<"132920"; }
              if (zeichen == 'Q'){cout << 133920 ; schreiben<<"133920"; }
              if (zeichen == 'R'){cout << 133520 ; schreiben<<"133520"; }
              if (zeichen == 'S'){cout << 132220 ; schreiben<<"132220"; }
              if (zeichen == 'T'){cout << 135220 ; schreiben<<"135220"; }
              if (zeichen == 'U'){cout << 133820 ; schreiben<<"133820"; }
              if (zeichen == 'V'){cout << 132820 ; schreiben<<"132820"; }
              if (zeichen == 'W'){cout << 134720 ; schreiben<<"134720"; }
              if (zeichen == 'X'){cout << 132520 ; schreiben<<"132520"; }
              if (zeichen == 'Y'){cout << 135320 ; schreiben<<"135320"; }
              if (zeichen == 'Z'){cout << 134520 ; schreiben<<"134520"; }
              if (zeichen == 'Ä'){cout << 133720 ; schreiben<<"133720"; }
              if (zeichen == 'Ö'){cout << 135520 ; schreiben<<"135520"; }
              if (zeichen == 'Ü'){cout << 132620 ; schreiben<<"132620"; }
              if (zeichen == '0'){cout << 142520 ; schreiben<<"142520"; }
              if (zeichen == '1'){cout << 142920 ; schreiben<<"142920"; }
              if (zeichen == '2'){cout << 142320 ; schreiben<<"142320"; }
              if (zeichen == '3'){cout << 142620 ; schreiben<<"142620"; }
              if (zeichen == '4'){cout << 143320 ; schreiben<<"143320"; }
              if (zeichen == '5'){cout << 142820 ; schreiben<<"142820"; }
              if (zeichen == '6'){cout << 142420 ; schreiben<<"142420"; }
              if (zeichen == '7'){cout << 143220 ; schreiben<<"143220"; }
              if (zeichen == '8'){cout << 142220 ; schreiben<<"142220"; }
              if (zeichen == '9'){cout << 142720 ; schreiben<<"142720"; }
              if (zeichen == '.'){cout << 153420 ; schreiben<<"153420"; }
              if (zeichen == ','){cout << 152620 ; schreiben<<"152620"; }
              if (zeichen == '?'){cout << 152320 ; schreiben<<"152320"; }
              if (zeichen == '!'){cout << 152920 ; schreiben<<"152920"; }
              if (zeichen == ':'){cout << 153620 ; schreiben<<"153620"; }
              if (zeichen == '"'){cout << 152720 ; schreiben<<"152720"; }
              if (zeichen == '&'){cout << 152420 ; schreiben<<"152420"; }
              if (zeichen == '('){cout << 153720 ; schreiben<<"153720"; }
              if (zeichen == ')'){cout << 152520 ; schreiben<<"152520"; }
              if (zeichen == '/'){cout << 152220 ; schreiben<<"152220"; }
              if (zeichen == ';'){cout << 153220 ; schreiben<<"153220"; }
              if (zeichen == '+'){cout << 152820 ; schreiben<<"152820"; }
              if (zeichen == '-'){cout << 153520 ; schreiben<<"153520"; }
              if (zeichen == '='){cout << 153320 ; schreiben<<"153320"; }
              if (zeichen == ' '){cout << 153820 ; schreiben<<"153820"; }
              cout << " "; schreiben << " ";
              if (zeichen == '^'){schreiben.close(); return 0;}

              }
              }
              return 0;
              }

            • Antwort von nach 5 Tagen 0 hilfreich
              Re^7: c++ ver-/entschluesselung

              Liebwerte Feuerklinge, <-- Anrede so, ich muss nicht jedes zeichen für zeichen einzeln eingeben!
              Du hast mich falsch verstanden. Ich meinte nicht, dass Du die Zeichen
              einzeln eingeben sollst. Ich bin sogar der Meinung, dass Du das
              nichtmal beim verschlüsseln machen solltest. Du sollst eine Datei
              direkt Zeichen für Zeichen einlesen, bis das Ende der Datei erreicht
              ist. Diese Zeichen vergleichst Du dann mit Deinem "if..." Gedöns und
              schreibst die Ausgabe in eine andere Datei. mein verschlüsselungsprogramm speichert eine zahl, macht ein
              leerzeichen und speichert die nächste zahl.
              Beantworte Dir doch mal folgende Fragen:

              1) Wie lautet der C++ Befehl, Zeichen aus einer Datei einzeln einzulesen?

              2) Wie erkennt man, wenn eine Datei zuende ist?

              3) Wie kannst Du 1) und 2) benutzen, um Dein Programm "Verschlüsselung" ans laufen zu bekommen?

              4) Wieso klappt das so ohne weiteres nicht, wenn Du die verschlüsselte Datei wieder einliest?

              5) Was musst Du ändern, damit es auch mit der Entschlüsselung funktioniert? folglich wird jede zahl als separatrer string erkannt
              Seit wann werden Strings in C++ mit Leerzeichen terminiert? Also gleich noch eine Frage hinterher:

              6) Wie wird das Ende eines Strings in C++ erkannt? wie viele von denen wissen denn bitteschön, dass sie das einen
              hexeditor benutzen müssen?
              Erstens weiß das immer genau einer zu viel, wenn es darauf
              ankommt. Zweitens braucht man überhaupt keine weiteren Informationen
              außer der verschlüsselten Datei, um diese wieder zu entschlüsseln,
              wenn sie lang genug ist. Du nutzt eine einfache Substitution. Ob das
              nun sechsstellige Zahlen sind, oder 1000stellige Zahlen, oder einfach
              andere Buchstaben aus dem Alphabet spielt überhaupt keine Rolle.

              Noch ein Hinweis: Um Quelltext zu posten, nutze doch bitte die "pre"
              Tags oder (noch besser) setze einen Link auf ein pastebin.

              http://pastebin.com/

              Last not least: Gewöhne Dir mal an, Groß-, Kleinschreibung und
              Interpunktion zu verwenden. Dann wird Dein Text besser lesbar.


              Gruß

              Fritze

              PS: Vielleicht solltest Du Dir mal http://www.cryptool.de/ anschauen.

            • Antwort von nach 6 Tagen 0 hilfreich
              Re^8: c++ ver-/entschluesselung

              Ahhh!
              Danke für die netten Gegenfragen!!!!!!!

              1
              ifstream Quelldatei;
              Quelldatei.open("a.txt", ios_base::in);
              ofstream Zieldatei("b.txt");
              char c;
              while (Quelldatei.get(c))
              {
              if(c == 'buchstabe'){Zieldatei.put('verschlüsselter buchstabe');}
              }

              Aber 'verschlüsselter buchstabe' darf nicht mehr als ein Buchstabe sein, auch wenn ich "" verwende.


              2
              Wie man erkennt, ob eine Datei zuende ist:(mein Vorschlag)
              beim Kodieren ein Endzeichen anfügen, dass beim Dekodieren den Schleifanabbruch zur Folge hat.

              3
              Kein Plan!

              4
              Weil ich kein char, sondern ein string (mehrere Zeichen) einlese.

              5
              Ich muss mein Entschlüsselungsprogramm so schreiben, dass es strings einliest. Daran bin ich jedoch schon verzweifelt!

              6
              Ich wollte das Ende eines Strings durch die "0" erkannbar machen. Ich weiß aber nicht mit welchen Befehlen ich das mache. Ich habe schon gesucht und eine Art "finde&ersetze" versucht zusammenzubauen, was jedoch nicht funktioniert hat.

              Kannst du mir dabei noch weiterhelfen? Tut mir leid, wenn ich mich ein wenig dumm anstelle! Vielen Dank für deine bisherige Hilfe!

              @deconstruct: Vielen Dank für die Hinweise (Links)
              Die werden mir gewiss noch weiterhelfen, doch wollte ich erst einmal meine eigene Idee vom Verschlüsseln verwiklichen, auch wenn das vielen dumm vorkommt. Das hat mit meiner Philosophie zu tun...



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!