#include #include #include using namespace std; int szyfrowanie(unsigned short &szyfr, unsigned short tresc, unsigned short klucz) { return szyfr = tresc ^ klucz; } char deszyfrowanie( unsigned short szyfr, unsigned short &tresc, unsigned short klucz) { return tresc = szyfr ^ klucz; } char* wypisz(unsigned short rej) { static char bufor[32] = { 0 }; unsigned short n = 0; n = sprintf(bufor, "", rej, rej); for (int i = 31; i >= 0; i--) n += sprintf(&bufor[n], "%d ", static_cast(rej & (1 << i))); return bufor; } int main() { unsigned short klucz = 2011; unsigned short szyfr; unsigned short tresc = 2256; int wybor; bool koniec = false; do { cout << ("Co chcesz zrobic?") << endl; cout << ("1. Zaszyfruj tekst ") << endl; cout << ("2. Odszyfruj tekst ") << endl; cout << ("3. Zakoncz ") << endl; cin >> wybor; switch (wybor) { case(1): { printf("\nSzyforwanie tresci z uzyciem XOR:\n"); printf("tresc:\t%s\n", wypisz(tresc)); printf("klucz:\t%s\n", wypisz(klucz)); szyfrowanie(szyfr, tresc, klucz); printf("szyfr:\t%s\n", wypisz(szyfr)); break; } case(2): { deszyfrowanie(szyfr, tresc, klucz); printf("\nOdszyforwanie tresci z uzyciem XOR:\n"); printf("szyfr:\t%s\n", wypisz(szyfr)); printf("klucz:\t%s\n", wypisz(klucz)); printf("tresc:\t%s\n", wypisz(tresc)); break; } case(3): { koniec = true; break; } } } while (koniec == false); return 0; }