diff options
Diffstat (limited to 'server/src/util/enc.cpp')
| -rw-r--r-- | server/src/util/enc.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/server/src/util/enc.cpp b/server/src/util/enc.cpp new file mode 100644 index 0000000..6a7baed --- /dev/null +++ b/server/src/util/enc.cpp @@ -0,0 +1,34 @@ +#include "../include.h" +#include "enc.h" + +namespace enc { + +void encrypt_message(std::string &str) { + std::random_device r; + std::default_random_engine e1(r()); + std::uniform_int_distribution<int> gen(0, 255); + + char k1 = static_cast<char>(gen(e1)); + char k2 = static_cast<char>(gen(e1)); + for (int i = 0; i < str.size(); i++) { + char k = (i % 2) ? k1 : k2; + str[i] ^= k; + } + str.insert(str.begin(), k1); + str.insert(str.end(), k2); +} + +void decrypt_message(std::string &str) { + char k1 = str[0]; + char k2 = str[str.size() - 1]; + + str.erase(str.begin()); + str.erase(str.end() - 1); + + for (int i = 0; i < str.size(); i++) { + char k = (i % 2) ? k1 : k2; + str[i] ^= k; + } +} + +}; // namespace enc
\ No newline at end of file |