| 本帖最后由 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        八字节
 |