Compare commits
8 Commits
289d0db7eb
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
15b4013868 | ||
|
|
2517617d4f | ||
|
|
cd0a0d5e44 | ||
|
|
e7e42922b6 | ||
|
|
c0ed7ca721 | ||
|
|
08129fee79 | ||
|
|
fbbbef7da6 | ||
|
|
bba8c620bd |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
udpserver
|
udpserver
|
||||||
*.log
|
*.log
|
||||||
*.pid
|
*.pid
|
||||||
|
.vscode
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
# Simple multithreaded UDP server
|
# Simple C++ multithreaded UDP server
|
||||||
|
|
||||||
[](README.md)
|
[](README.md)
|
||||||
[](README.md)
|
[](README.md)
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||
|
|
||||||
Simple multithreaded UDP server.
|
Simple C++ multithreaded UDP server.
|
||||||
The number of threads is determined by the number of CPU cores.
|
The number of threads is determined by the number of CPU cores.
|
||||||
JSON logging.
|
JSON logging.
|
||||||
|
XTea encryption functions.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "json11.hpp"
|
#include "json11.h"
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/* g++ -o udpserver udpserver.cpp -std=c++11 json11.cpp -pthread -s -O2 */
|
/* g++ -o udpserver udpserver.cpp -std=c++11 json11.cpp -pthread -s -O2 */
|
||||||
/* udpserver 127.0.0.1 10003 */
|
/* udpserver 127.0.0.1 10003 */
|
||||||
|
/* Version 2022.04 */
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
@@ -9,7 +10,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
#include "json11.hpp"
|
#include "json11.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace json11;
|
using namespace json11;
|
||||||
@@ -162,7 +163,7 @@ void termHandler(int i) {
|
|||||||
|
|
||||||
// XTea Encryption, use if necessary...
|
// XTea Encryption, use if necessary...
|
||||||
void xteaEncipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {
|
void xteaEncipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
uint32_t v0 = v[0], v1 = v[1], sum = 0, delta = 0x9E3779B9;
|
uint32_t v0 = v[0], v1 = v[1], sum = 0, delta = 0x9E3779B9;
|
||||||
for (i = 0; i < num_rounds; i++) {
|
for (i = 0; i < num_rounds; i++) {
|
||||||
v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
|
v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
|
||||||
@@ -185,26 +186,24 @@ void xteaDecipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4])
|
|||||||
|
|
||||||
void stringCrypt(char *inout, int len, bool encrypt) // encrypt true - encrypt, false - decript
|
void stringCrypt(char *inout, int len, bool encrypt) // encrypt true - encrypt, false - decript
|
||||||
{
|
{
|
||||||
for (int i = 0; i < len / BLOCK_SIZE; i++) {
|
for (int i = 0; i < len / BLOCK_SIZE; i++) {
|
||||||
if (encrypt) {
|
if (encrypt) {
|
||||||
xteaEncipher(32, (uint32_t*)(inout + (i * BLOCK_SIZE)), key);
|
xteaEncipher(32, (uint32_t*)(inout + (i * BLOCK_SIZE)), key);
|
||||||
} else {
|
} else {
|
||||||
xteaDecipher(32, (uint32_t*)(inout + (i * BLOCK_SIZE)), key);
|
xteaDecipher(32, (uint32_t*)(inout + (i * BLOCK_SIZE)), key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (len % BLOCK_SIZE != 0)
|
if (len % BLOCK_SIZE != 0) {
|
||||||
{
|
int mod = len % BLOCK_SIZE;
|
||||||
int mod = len % BLOCK_SIZE;
|
|
||||||
int offset = (len / BLOCK_SIZE) * BLOCK_SIZE;
|
int offset = (len / BLOCK_SIZE) * BLOCK_SIZE;
|
||||||
char data[BLOCK_SIZE];
|
char data[BLOCK_SIZE];
|
||||||
memcpy(data, inout + offset, mod);
|
memcpy(data, inout + offset, mod);
|
||||||
|
|
||||||
if (encrypt) {
|
if (encrypt) {
|
||||||
xteaEncipher(32, (uint32_t*)data, key);
|
xteaEncipher(32, (uint32_t*)data, key);
|
||||||
} else {
|
} else {
|
||||||
xteaDecipher(32, (uint32_t*)data, key);
|
xteaDecipher(32, (uint32_t*)data, key);
|
||||||
}
|
}
|
||||||
memcpy(inout + offset, data, mod);
|
memcpy(inout + offset, data, mod);
|
||||||
cout << mod << endl;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user