Завершено
2
18.04.2024, 10:48
22.04.2024, 09:29
Реализовать класс XorChipher простое шифрование с использованием оператора XOR.
Простой класс, по сути FIFO'шка, принимающая байты данных, и выдающая по запросу "зашифрованные" байты потока и наоборот.  
Реализовать класс XorChipher .
public и protected методы классов фиксированы, кроме спецификаторов. 
Т.е. нельзя менять названия методов, а также типы и количество аргументов.
НО в этих методах отсутствуют спецификаторы const и static, которые были удалены намеренно. Их необходимо вернуть на место.
private поля и private методы можно добавлять в класс XorChipher. 
//XorChipher.hpp
class XorChipher {
public:
  XorChipher();
  XorChipher(const char* password);
  XorChipher(size_t size);
  XorChipher(size_t size, const char* password);
  ~XorChipher();
  XorChipher(const XorChipher&) = delete;
  XorChipher& operator=(const XorChipher&) = delete;
  void password(const char* passw);
  size_t push(const char* data, size_t size);
  size_t pop(const char* buff, size_t size);
protected:
  const size_t с_default_size = 1024;
};
XorChipher() -- Конструктор по умолчанию, задаёт длину буфера по умолчанию.XorChipher(const char* password) -- Конструктор задающий длину буфера по умолчанию и пароль.XorChipher(size_t size) -- Конструктор задающий длину буфера.XorChipher(size_t size, const char* password) -- Конструктор задающий длину буфера и пароль.XorChipher(const XorChipher& val) = delete -- запрет копирующего конструктора.XorChipher& operator=(const XorChipher&) = delete -- запрет оператора присваивания~XorChipher() -- деструктор.void password(const char* passw) -- задаёт новый пароль, вся история сбрасывается.size_t push(const char* data, size_t size) -- передать (протолкнуть) на шифрование очередную порцию данных.
Читает из входного буфера данные, шифрует их с помощью заданного пароля и функции XOR, записывает шифрованные данные в пустое место внутреннего буфера.
Возвращает количество забранных из буфера байт. 
Если пароль не задан или задан размер внутреннего буфера равный нулю(0), то ничего не делает и возвращает ноль(0). size_t pop(const char* buff, size_t size) -- забрать (вытолкнуть) зашифрованные данные из буфера.
Копирует данные из внутреннего буфера.
Возвращает количество записанных в буфер байт. const size_t _default_size = 1024 -- Длина внутреннего буфера по умолчанию.