调整XXTEA算法
This commit is contained in:
parent
bf189c20c7
commit
2cd24ce2e2
|
|
@ -27,7 +27,7 @@ extern "C" {
|
||||||
static void xxtea_long_encrypt(xxtea_long *v, xxtea_long len, xxtea_long *k)
|
static void xxtea_long_encrypt(xxtea_long *v, xxtea_long len, xxtea_long *k)
|
||||||
{
|
{
|
||||||
xxtea_long n = len - 1;
|
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) {
|
if (n < 1) {
|
||||||
return;
|
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)
|
static void xxtea_long_decrypt(xxtea_long *v, xxtea_long len, xxtea_long *k)
|
||||||
{
|
{
|
||||||
xxtea_long n = len - 1;
|
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) {
|
if (n < 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,8 +52,8 @@ typedef uint32_t xxtea_long;
|
||||||
|
|
||||||
#endif /* end of if defined(_MSC_VER) */
|
#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_MX (z >> 3 ^ y << 2) + (y >> 5 ^ z << 4) ^ (sum ^ y) + (k[p & 3 ^ e] ^ z)
|
||||||
#define XXTEA_DELTA 0x9e3779b9
|
#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_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);
|
XXTEA_DLL unsigned char *xxtea_decrypt(unsigned char *data, xxtea_long data_len, unsigned char *key, xxtea_long key_len, xxtea_long *ret_length);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue