大家帮我分析一下3des 算法中 XorDev这个异或分散函数是否有问题?
因为pdata 是数据加密部分,pfactor 是数据源,整个是解密,我对3des不懂,
麻烦大家指导一下这个函数编写是否有问题
// 对定长的数据做异或分散处理
static const BYTE Xor_Table[] =
{
0x1E, 0x13, 0x17, 0x11, 0x09, 0x03, 0x02, 0x16,
0x01, 0x08, 0x0D, 0x10, 0x14, 0x1B, 0x0C, 0x04,
0x07, 0x0B, 0x19, 0x1C, 0x0E, 0x12, 0x0A, 0x1D,
0x00, 0x05, 0x06, 0x1F, 0x0F, 0x15, 0x18, 0x1A
};
void XorDev(BYTE * pData, int nLenData, BYTE * pFactor)
{
char chBuf0[256] = {0};
char chBuf1[256] = {0};
BYTE bBuf[256] = {0};
Hexs2Str(pData, nLenData, chBuf0, sizeof(chBuf0));
for(BYTE i = 0; i < nLenData * 2; i ++ )
{
chBuf1[Xor_Table[i]] = chBuf0[i];
}
Str2Hexs(chBuf1, (DWORD)strlen(chBuf1), bBuf, sizeof(bBuf));
for(int i = nLenData - 1; i > 0; i -- )
{
pData[i] = bBuf[i] ^ bBuf[i-1];
}
pData[0] = bBuf[0] ^ pFactor[3];
} |