本帖最后由 arbies 于 2009-9-16 11:34 编辑 首先要对整个文件筛选解密:(文件读入pDatas数组中,大小即文件长度为Size)
WORD key_r = 0x0816;
WORD key_c1 = 0x6081;
WORD key_c2 = 0x1608;
for(int i = 0; i < Size; i++)
{
BYTE byData = (pDatas ^ (key_r>>8));
key_r = (pDatas + key_r) * key_c1 + key_c2;
pDatas = byData;
}
之后就是明文的文件内容了,内容依次为:
列数(int)
各列对应的类型(int)
行数(int)
各行的数据
其中数据类型从0开始依次为:
DT_NONE, DT_CHAR,DT_BYTE, DT_SHORT,DT_WORD, DT_INT,DT_DWORD, DT_STRING,DT_FLOAT, DT_DOUBLE
而各行的数据按相应列组织如下:
类型 值 存储方式
DT_NONE 0
DT_CHAR 1 字节
DT_BYTE 2 字节
DT_SHORT 3 双字节
DT_WORD 4 双字节
DT_INT 5 四字节
DT_DWORD 6 四字节
DT_STRING 7 长度+字符串
DT_FLOAT 8 四字节
DT_DOUBLE 9 八字节 |