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