Witam, mam za zadanie napisać program szyfrujący plik otworzony w trybie binarnym za pomocą szyfru XOR (Np. ifstream plik("xor.txt", ios::binary)). Dowiedziałem się że najlepszą opcją byłoby szyfrowanie znaków w postaci unsigned char, jednak rodzą się z tego moje wątpliwości. Myślę, że jedyną opcją byłoby odczytanie zawartości pliku do tablicy znaków, jednak nie będę wiedział, jak długie będą napisy w pliku. Dodatkowo próbowałem jako test zaszyfrować napis (który zawierał spacje) kluczem, najpierw szyfrując bezpośrednio na znakach (znak1 ^ znak2) później na kodach ASCII (liczba1 - 'A' ^ liczba2 - 'A') + 'A' oraz (liczba1 - ' ') ^ (liczba2 - ' ') + ' ' i w wyniku szyfrowania powstawały dziwne znaki. Najwyraźniej nie do końca rozumiem idei tego szyfrowania i dlatego piszę tutaj z pomocą. Jeżeli ktoś mógłby mi wyjaśnić jak będzie można to mniej więcej zaimplementować w C++ będę bardzo wdzięczny. Najlepiej bez użycia skomplikowanych komend.
Nie wiem czy to pomoże, ale zamieszczam na razie kod wspominanego programu testowego.
#include <iostream>
using namespace std;
int main()
{
unsigned char A[13] = "Ala ma kota.";
unsigned char B[5] = "abcd";
int a, b;
for(int i = 0; i < 12; i++)
{
a = A[i] - 'A';
b = B[i] - 'A';
a ^= b;
a += 'A';
cout << (unsigned char)(a);
}
return 0;
}