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.