Szyfr Vigenère'a

0

Witam. Mógłby ktoś pomóc z tym szyfrem? Głównie chodzi mi o to czy da radę jakoś to prościej napisać czy zostawić tak jak jest? Może ktoś ma to lepiej zrobione i dobrze wytłumaczone. Byłbym wdzięczny za pomoc.

#include<iostream>
#include<string.h>
 
using namespace std;
 
int main(){
	
	//Wiadomosc do zaszyfrowania
    char wiadomosc[] = "WIADOMOSC";
    
    //Klucz do szyfrownia
    char klucz[] = "KLUCZ";
    
    int wiadomoscLen = strlen(wiadomosc), kluczLen = strlen(klucz), i, j;
 
    char nowyKlucz[wiadomoscLen], szyfrWiadomosc[wiadomoscLen];
 
    //klucz
    for(i = 0, j = 0; i < wiadomoscLen; ++i, ++j){
        if(j == kluczLen)
            j = 0;
 
        nowyKlucz[i] = klucz[j];
    }
 
    nowyKlucz[i] = '\0';
 
   //szyfrowanie
    for(i = 0; i < wiadomoscLen; ++i)
        szyfrWiadomosc[i] = ((wiadomosc[i] + nowyKlucz[i]) % 26) + 'A';
 
    szyfrWiadomosc[i] = '\0';
 
    cout<<"Oryginalna wiadomosc: "<<wiadomosc<<endl;
    cout<<"Klucz: "<<klucz<<endl;
    cout<<"Wygenerowany klucz: "<<nowyKlucz<<endl;
    cout<<"Zaszyfrowana wiadomosc: "<<szyfrWiadomosc<<endl;
   
 
    return 0;
}
0

NowyKlucz ci jest niepotrzebne.
Sprawdz czy dobrze liczy kluczLen.

0
vpiotr napisał(a):

NowyKlucz ci jest niepotrzebne.
Sprawdz czy dobrze liczy kluczLen.

Ok, już go usuwam. Wydaje mi się że dobrze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1