Text Verschlüsseln



  • Morgen,

    Ich hab mir mal gedacht ich versuch mir ein kleines Text Verschlüsselungs Programm zu machen und das kam dabei raus 😉

    Funktioniert auch gut.

    Verschlüsseln:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    string schluessel[256];
    int i;
    char test;
    char zeichen[4];
    
             for (i=0 ; i<2; i++)
             {
                 cout<<"2 Zeichen eingeben: ";
    
                 cin>>zeichen[i];
    
             }
    
             for (i=0 ; i<2 ; i++)
             {
    
                    if (zeichen[i] == 'a')
                    {
                      schluessel[i] = "B";
                    }
    
                    if (zeichen[i] == 'b')
                    {
                      schluessel[i] = "C";
                    }
    
             }
    
    for (int i=0;i<2;i++)
    {
    cout<<"schluessel "<<i<<"ist: "<<schluessel[i]<<"\n";
    }
    
    return 0;
    }
    //---------------------------------------------------------------------------
    

    Entschlüsseln:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    string schluessel[256];
    int i;
    char test;
    char zeichen[4];
    
             for (i=0 ; i<2; i++)
             {
                 cout<<"2 Zeichen eingeben: ";
    
                 cin>>zeichen[i];
    
             }
    
             for (i=0 ; i<2 ; i++)
             {
    
                  if (zeichen[i] == 'b')
                    {
                      schluessel[i] = "A";
                    }
    
                  if (zeichen[i] == 'c')
                    {
                      schluessel[i] = "B";
                    }
    
             }
    
    for (int i=0;i<2;i++)
    {
    cout<<"Entschlusselt "<<i<<"ist: "<<schluessel[i]<<"\n";
    }
    
    return 0;
    }
    //---------------------------------------------------------------------------
    

    Jetzt will ich das aber so machen.

    Der User gibt eine Zeichen Kette ein:

    z.b.

    ab

    Die Verschlüsselung für ab soll lauten BA

    Wenn der User BA im Verschlüsselungs Programm eingibt so soll dieses ab ausgeben.

    Ich will halt nicht das der User jedes Zeichen einzelt eingeben muss hat da wer eine Idee wie das gehen könnte?



  • normalerweise würde ich sagen, guck dir mal die ascii-tabelle an....
    aber da dir anscheinend ein wenig das prinzip bzw. konzept fehlt erkläre ich mal etwas mehr.
    die ascii tabelle besitzt eine größe von einem byte und kodiert chars. intern werden chars wie ints behandelt.
    das heißt, wenn du einem int einem char zuweist, dann bekommt der eine zahl zwischen 0 und 255 oder so zugewiesen. a hätte bsp.-weise die nummer 65 oder so (hab das nicht im kopf)

    so nun könntest dus umdrehen, du fragst den user nach ner zahl und shiftest dann jedes zeichen des cstrings um diese zahl. das erspart die deine ifs und du hast nen netten anfängerkodierer.



  • en ig ma schrieb:

    Ich will halt nicht das der User jedes Zeichen einzelt eingeben muss hat da wer eine Idee wie das gehen könnte?

    ja.

    std::string text;
    std::cin >> text;
    

    //edit

    dgrat schrieb:

    so nun könntest dus umdrehen, du fragst den user nach ner zahl und shiftest dann jedes zeichen des cstrings um diese zahl.

    shiften is nicht so gut, das lässt sich nicht umkehren.
    besser wäre addieren, subdrahieren oder xor-en.


  • Administrator

    wandrer schrieb:

    en ig ma schrieb:

    Ich will halt nicht das der User jedes Zeichen einzelt eingeben muss hat da wer eine Idee wie das gehen könnte?

    ja.

    std::string text;
    std::cin >> text;
    

    Oder noch besser, wenn es nicht nur ein Wort, sondern ein ganzer Satz sein soll:

    std::string line;
    std::getline(std::cin, line);
    

    C++ Referenz: http://www.cplusplus.com/reference/

    Zudem solltest du dich wohl noch etwas in C++ über. "C++ Primer" oder "Thinking in C++" kaufen/anschauen 😉

    Grüssli



  • @enigma: wenn du den text unsystematisch verschlüsseln willst (also ohne +,-,xor etc., also ab -> BA ) solltest du eine tabelle mit 256 einträgen schreiben, in der steht welches zeichen durch welches ersetzt wird.
    könnte ein array, oder vector sein.

    std::vector tabelle;
    tabelle.resize(256);
    tabelle['a'] = 'B';
    tabelle['b'] = 'A';
    

    in deinem beispiel würde man sie dann so einsetzen:

    schluessel[i] = tabelle[ zeichen[i] ];
    

    //edit:
    halt nein, kommando zurück, du hast da irgendwas komisches gemacht.

    string schluessel[256]; 
    // sollte vermutlich
    string schluessel(256);
    // heißen, wenn du einen string haben willst der 256 zeichen lang ist
    

    oder is das deine tabelle? ne...


Anmelden zum Antworten