diff --git a/sources/xxtea/xxtea.cpp b/sources/xxtea/xxtea.cpp index 876a8fa9..015130ff 100644 --- a/sources/xxtea/xxtea.cpp +++ b/sources/xxtea/xxtea.cpp @@ -27,7 +27,7 @@ extern "C" { static void xxtea_long_encrypt(xxtea_long *v, xxtea_long len, xxtea_long *k) { xxtea_long n = len - 1; - xxtea_long z = v[n], y = v[0], p, q = 6 + 52 / (n + 1), sum = 0, e; + xxtea_long z = v[n], y = v[0], p, q = 7 + (n + 1) % 12, sum = 0, e; if (n < 1) { return; } @@ -46,7 +46,7 @@ static void xxtea_long_encrypt(xxtea_long *v, xxtea_long len, xxtea_long *k) static void xxtea_long_decrypt(xxtea_long *v, xxtea_long len, xxtea_long *k) { xxtea_long n = len - 1; - xxtea_long z = v[n], y = v[0], p, q = 6 + 52 / (n + 1), sum = q * XXTEA_DELTA, e; + xxtea_long z = v[n], y = v[0], p, q = 7 + (n + 1) % 12, sum = q * XXTEA_DELTA, e; if (n < 1) { return; } diff --git a/sources/xxtea/xxtea.h b/sources/xxtea/xxtea.h index 117d81ec..f069c654 100644 --- a/sources/xxtea/xxtea.h +++ b/sources/xxtea/xxtea.h @@ -52,8 +52,8 @@ typedef uint32_t xxtea_long; #endif /* end of if defined(_MSC_VER) */ -#define XXTEA_MX (z >> 5 ^ y << 2) + (y >> 3 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z) -#define XXTEA_DELTA 0x9e3779b9 +#define XXTEA_MX (z >> 3 ^ y << 2) + (y >> 5 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z) +#define XXTEA_DELTA 0xd38b681f XXTEA_DLL unsigned char *xxtea_encrypt(unsigned char *data, xxtea_long data_len, unsigned char *key, xxtea_long key_len, xxtea_long *ret_length); XXTEA_DLL unsigned char *xxtea_decrypt(unsigned char *data, xxtea_long data_len, unsigned char *key, xxtea_long key_len, xxtea_long *ret_length);