diff options
| author | alpine <[email protected]> | 2020-06-25 15:27:55 +0200 |
|---|---|---|
| committer | alpine <[email protected]> | 2020-06-25 15:27:55 +0200 |
| commit | 7067cac3b6d62ae17d02c636f7c5b92f8f587641 (patch) | |
| tree | 8953389cb128e8a3cdca70283bcdb75b63bc7d48 /server/src/util | |
| parent | Added client version control. (diff) | |
| download | loader-7067cac3b6d62ae17d02c636f7c5b92f8f587641.tar.xz loader-7067cac3b6d62ae17d02c636f7c5b92f8f587641.zip | |
Added 2 key xor encryption for streams.
Diffstat (limited to 'server/src/util')
| -rw-r--r-- | server/src/util/enc.cpp | 34 | ||||
| -rw-r--r-- | server/src/util/enc.h | 8 |
2 files changed, 42 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 diff --git a/server/src/util/enc.h b/server/src/util/enc.h new file mode 100644 index 0000000..ae8d5a6 --- /dev/null +++ b/server/src/util/enc.h @@ -0,0 +1,8 @@ +#pragma once + +namespace enc { + +void encrypt_message(std::string &str); +void decrypt_message(std::string &str); + +}; // namespace enc
\ No newline at end of file |