我每个题的代码都很垃圾,取指令长度用的X86IL.h(forgot很看不起这个)
很简单的特征字节搜索解码函数,如果搜不到就是0分了
des和标准的相比,我看到的情况是只有两个盒子变了
我先是通过代码对比des的区别,因为实现原理有差异,结果跟的晕头,失败告终,
最后把应用密码学的书拿出来,用书上标准流程和程序里的代码对比,最后找到了区别

变换后的两个box:
static int pc_1_c[28]=
{
  57,  49,  41,  33,  25,  17,  9,
  1,  58,  50,  42,  34,  26,  18,
  10,  2,  59,  51,  43,  35,  27,
  19,  11,  3,  52,  60,  44,  36
};
static int pc_1_d[28]=
{
  63,  55,  47,  39,  31,  23,  15,
  7,  62,  54,  46,  38,  30,  22,
  14,  6,  61,  53,  37,  45,  29,
  21,  13,  28,  5,  20,  12,  4
};

/*原始的两个box
static int pc_1_c[28]=
{
  57,  49,  41,  33,  25,  17,  9,
  1,  58,  50,  42,  34,  26,  18,
  10,  2,  59,  51,  43,  35,  27,
  19,  11,  3,  60,  52,  44,  36
};
static int pc_1_d[28]=
{
  63,  55,  47,  39,  31,  23,  15,
  7,  62,  54,  46,  38,  30,  22,
  14,  6,  61,  53,  45,  37,  29,
  21,  13,  5,  28,  20,  12,  4
};
*/

上面说的不准确,那其实是一个box被拆成了两半,另一个修改的box是:
static int pc_2[48]=
{
  14,  17,  11,  24,  1,  5,
  3,  28,  15,  6,  21,  10,
  23,  19,  12,  4,  26,  8,
  16,  7,  27,  13,  20,  2,
  41,  52,  31,  37,  47,  55,
  30,  40,  45,  33,  51,  48,
  44,  49,  56,  39,  34,  53,
  46,  42,  50,  36,  29,  32
};

/*原始box
static int pc_2[48]=
{
  14,  17,  11,  24,  1,  5,
  3,  28,  15,  6,  21,  10,
  23,  19,  12,  4,  26,  8,
  16,  7,  27,  20,  13,  2,
  41,  52,  31,  37,  47,  55,
  30,  40,  51,  45,  33,  48,
  44,  49,  39,  56,  34,  53,
  46,  42,  50,  36,  29,  32
};
*/