Vigenere-Verschlüsselung!

nekyl

Mitglied
Zur Kodierung von Zeichenketten kann folgendes Verfahren (Vigenere Codierung) angewendet werden: Statt wie beim Cäsar Verfahren jeden Buchstaben um eine konstante Zahl zu verschieben, verwendet man eine zweite Zeichenkette als Schlüssel. Jedes Zeichen wird jetzt um einen Wert verschoben, der dem Zeichen an der passenden Position im Schlüssel entspricht. Ist der Schlüssel kürzer als die zu verschlüsselnde Zeichenkette, so wird der Schlüssel einfach zyklisch immer wieder angewendet. Z.B.:


Zeichenkette: eintest
Schlüssel: abc
Code: fkqugvu

(Aus Gründen der Anschaulichkeit wird hier bei a um eins verschoben, bei b um zwei und so weiter. Für die einfache Implementierung empfiehlt sich vielleicht eine andere Zuordnung von Zeichen zu der jeweiligen Zahl, um die verschoben wird.)
Schreiben Sie die Funktionen code und decode, die als Parameter die Zeichenkette (den Code) und den Schlüssel erhalten, und den Code (die ursprüngliche Zeichenkette am Bildschirm ausgeben. Schreiben Sie auch eine Funktion analyze, die als Parameter die codierte und die uncodierte Zeichenkette erhält und den Schlüsselwert rekonstruiert. (Eventuelle zyklische Wiederholungen können dabei unberücksichtigt bleiben, so daß im obigen Beispiel das Ergebnis 'abcabca' korrekt wäre.)

So ist die Angabe.
Und mein Code:
Code:
#include <iostream>
using namespace std;

int main (){
     
    char txt[80];
    char key[80];
    char letters[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
       

    cout << "Geben Sie das Wort, das Sie verschluesseln wollen:" <<endl;
    cin >> txt;
    cout << "Geben Sie das Schluesselwort:" <<endl;
    cin >> key;

	for (int i=0; txt[i]!='\0'; i++)
             cout << txt[i];
	     cout << endl;

und wie geht es jetzt weiter? bin ich im richtigen Weg?
 
Hi

mach oben einmal ein
#include<string.h>

unten dann
Code:
int a,b;
b=0;
for(a=0;a<strlen(txt);a++)
{
   if(key[b]=='\0')b=0;
   txt[a]+=key[b];
}

So in etwa sollte es gehen

Gruß
 
Hi

mach oben einmal ein
#include<string.h>

unten dann
Code:
int a,b;
b=0;
for(a=0;a<strlen(txt);a++)
{
   if(key[b]=='\0')b=0;
   txt[a]+=key[b];
}

So in etwa sollte es gehen.

Gruß
 
Zurück