Завершено
2
22.03.2021, 13:17
03.05.2021, 07:22
Реализовать класс 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 -- Длина внутреннего буфера по умолчанию.