#pragma once #include #include #include #include #include #include #include #include #include #include #include #include "DataStruct.h" class EncryptionManager { public: EncryptionManager(); ~EncryptionManager() = default; std::vector encrypt(const std::vector&); std::vector decrypt(const std::vector&); void saveKey(const std::string&, bool); void loadKey(const std::string&); private: std::array key{}; std::array nonce{}; bool keyReady; void generateKeys(); std::string toHex(const std::vector&); void saveCppHeadFile(const std::string&); template std::array toArray(const std::vector& vec) { if (vec.size() < N) { throw std::runtime_error("Too small vector to convert to array"); } std::array arr{}; std::memcpy(arr.data(), vec.data(), N); return arr; } };