贴上加密函数C代码
DWORD *KeyA=NULL;
DWORD *KeyB=NULL;
unsigned long TempA=0;
unsigned long MulA=0;
unsigned long MulB=0;
unsigned long MulC=0;
unsigned long MulD=0;
unsigned long TempKeyA=0;
unsigned long TempKeyB=0;
void CMy2008Dlg::OnCalc()
{ ....
KeyA=(unsigned long *)XorKey;
KeyB=(unsigned long *)(XorKey+4);
MUL802(*KeyA,*KeyB);
}
long CMy2008Dlg::MUL802(unsigned long a, unsigned long b)
{
TempA = a;
//a:参数1的高位×参数2的低位
a = a >>16;
MulA = a * (b & 0xffff);
//b:参数1的低位×参数2的低位
MulB = (TempA & 0xffff) * (b & 0xffff);
//c:参数1的低位×参数2的高位
MulC = (TempA & 0xffff) * (b >>16);
MulD = MulA + MulC;
TempKeyA = MulB + (MulD << 16);
TempKeyB = 0 + (MulD >> 16);
if(TempKeyA >=(MulD << 16))
{
//d:参数1的高位×参数2的高位
TempKeyB = a * (b >> 16) + TempKeyB;
}
//TempKeyA、TempKeyB就是结果
return 0;
}
在这儿有点问题,参数b是参a的一个Copy,值是一样的?(之所以打?号是只经过了第一执行,还没测试后面的循环)
