vigneré Verschlüsselung



  • Hallo.
    Ich schreibe gerade ein Programm, mit dem ich Texte durch das vigneré Muster Verschlüsseln kann. Leider schaff ich es nicht, diese über einen Code wieder zu entschlüsseln und hoffe auf Tipps.

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char text[1000];
        char passwort[100];
        int i, p;
    
        printf("Eingabetext:    ");
        gets(text);
        printf("Passwort:       ");
        gets(passwort);
    
        for(i = 0, p = 0; text[i]; i++)
              {
              if(text[i] == ' ')
                  continue;
              text[i] = 'A' + ((passwort[p] - 'A') + (text[i] - 'a')) % 26;
    
              p++;
              if(passwort[p] == 0)
                  p = 0;
              }
        printf("\n\nVerschluesselt: %s\n\n", text);
    
        for(i = 0, p = 0; text[i]; i++)
              {
              if(text[i] == ' ')
                  continue;
              // Entschluesselung klappt leider nicht ganz.
              text[i] = 'a' + ((text[i] - 'A') - (passwort[p] - 'A'));
    
              p++;
              if(passwort[p] == 0)
                  p = 0;
              }
        printf("Entschluesselt: %s\n", text);
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


  • Hi!
    Du musst Groß-/Kleinschreibung beachten.
    Guckst du:

    // verschlüsseln:
    if ( isupper(text[i]) )
    			text[i] = 'A' + (( toupper(passwort[p]) - 'A') + (text[i] - 'A')) % 26; 
    		  else
    			text[i] = 'a' + (( toupper(passwort[p]) - 'A') + (text[i] - 'a')) % 26;
    
    // entschlüsseln
     if ( isupper(text[i]) )
    			text[i] = 'A' + ((text[i] - 'A') - (toupper(passwort[p]) - 'A')); 
    		  else
    			text[i] = 'a' + ((text[i] - 'a') - (toupper(passwort[p]) - 'A'));
    

    🙂
    Gruß, B.B.



  • Big Brother schrieb:

    Hi!
    Du musst Groß-/Kleinschreibung beachten.
    Guckst du:

    // verschlüsseln:
    if ( isupper(text[i]) )
    			text[i] = 'A' + (( toupper(passwort[p]) - 'A') + (text[i] - 'A')) % 26; 
    		  else
    			text[i] = 'a' + (( toupper(passwort[p]) - 'A') + (text[i] - 'a')) % 26;
    
    // entschlüsseln
     if ( isupper(text[i]) )
    			text[i] = 'A' + ((text[i] - 'A') - (toupper(passwort[p]) - 'A')); 
    		  else
    			text[i] = 'a' + ((text[i] - 'a') - (toupper(passwort[p]) - 'A'));
    

    🙂
    Gruß, B.B.

    Hi B.B und danke für deine Antwort.
    Es liegt nicht an der Groß- und Kleinschreibung, da das Programm so gemacht wurde, dass der zu verschlüsselnde Text kleingeschrieben wird und das passwort groß.

    http://illuminations.nctm.org/Lessons/Codes/Vigenere-Highlight.jpg

    Es liegt dich an meinem Entschlüsselungscode 😞
    Bei "kleineren" Buchstaben gehts, bei höheren wieder nicht.


Anmelden zum Antworten