最近在捣鼓一个东西,网上搜到了核心部分的加密算法代码,无奈才疏学浅,对加密这一块一点都不了解,该部分C代码完全懵逼。不知社区是否有对DES加密熟悉的不?还望指教。
代码如下:
while(len)
{for(i=0;i<3;i++)
{eax = *((int*)(pCodeNow + 0x44));
ebx=*((int*)(pDataNow));
num = eax^ebx;
numold = *((int*)(pDataNow + 0x4));
for(j=0x40;j>0;j=j-4)
{ebx = (num & 0xff0000) >> 16;
eax = *((int*)(pCodeNow + ebx * 4 + 0x44 );
ebx = num >> 24;
eax += *((int*)(pCodeNow + ebx * 4 + 0x4 );
ebx = (num & 0xff00) >> 8;
eax ^= *((int*)(pCodeNow + ebx * 4 + 0x84 );
ebx = num & 0xff;
eax += *((int*)(pCodeNow + ebx * 4 + 0xC4 );
eax ^= *((int*)(pCodeNow + j));
ebx = num;
num = numold^eax;
numold = ebx;
}
numold ^= *((int*)pCodeNow);
pInt = (unsigned int*)pDataNow;
*pInt = numold;
pInt = (unsigned int*)(pDataNow+4);
*pInt = num;
pDataNow = pDataNow + 8;
}
pDataNow = pDataNow + 5;
len--;
}
其原帖中说明如下:
1、加密文件中,每条记录29字节,前24字节是加密的,后5字节未加密,因为他用的加密算法是固定64位,一次加密8字节 2、解密过程汇编代码很长,但仔细分析后可以转换为16次循环,64位对称加密,16次循环,呵呵,DES嘛。
请问: 1.pCodeNow和pDataNow分别为何种数据类型?char *?char []?或者其它? 2.pCodeNow和pDataNow从何处获得其值? 3.解密后的数据是哪些变量?
|