55 lines
964 B
C++
55 lines
964 B
C++
#include <windows.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "tea.h"
|
|
#include "../systeminc/VMProtectSDK.h"
|
|
unsigned long DELTA=0x9e3779b9;
|
|
#define MX (z>>5^y<<2) + (y>>3^z<<4)^(sum^y) + (k[p&3^e]^z);
|
|
long TEA加密(long* v, long n, long* k)
|
|
{
|
|
#ifdef _VMP_
|
|
VMProtectBegin("teajiami");
|
|
#endif
|
|
unsigned long z,y,sum,e;
|
|
z=v[n-1];
|
|
y=v[0];
|
|
sum=0;
|
|
long p, q;
|
|
/* 加密过程 */
|
|
q = 6 + 52/n;
|
|
while (q-- > 0)
|
|
{
|
|
sum += DELTA;
|
|
e = (sum >> 2) & 3;
|
|
for (p=0; p<n-1; p++)
|
|
y = v[p+1],z = v[p] += MX;
|
|
y = v[0];
|
|
z = v[n-1] += MX;
|
|
}
|
|
#ifdef _VMP_
|
|
VMProtectEnd();
|
|
#endif
|
|
return 0 ;
|
|
}
|
|
|
|
long TEA解密(long* v, long n, long* k)
|
|
{
|
|
unsigned long z,y,sum,e;
|
|
z=v[n-1];
|
|
y=v[0];
|
|
sum=0;
|
|
long p, q;
|
|
q = 6 + 52/n;
|
|
sum = q*DELTA;
|
|
while(sum != 0)
|
|
{
|
|
e = (sum >> 2) & 3;
|
|
for (p=n-1; p>0; p--)
|
|
z = v[p-1], y = v[p] -= MX;
|
|
z = v[n-1]; y = v[0] -= MX;
|
|
sum -= DELTA;
|
|
}
|
|
return 0;
|
|
}
|
|
|