WEB开发网
开发学院软件开发C语言 分组密码SAFER+的C#实现 阅读

分组密码SAFER+的C#实现

 2009-02-27 08:18:34 来源:WEB开发网   
核心提示: 然后进行32轮迭代,首论迭代从高位m_nRoundsLen-1开始以后依次递减1,分组密码SAFER+的C#实现(9),直到为0,在第i论迭代中,先将input数组右乘矩阵m_nAntiLinearTransMatrixBox(该矩阵的说明详见参考文献[1]),代码如下:temp = in

然后进行32轮迭代,首论迭代从高位m_nRoundsLen-1开始以后依次递减1,直到为0。在第i论迭代中,先将input数组右乘矩阵m_nAntiLinearTransMatrixBox(该矩阵的说明详见参考文献[1]),代码如下:

temp = input[6];

                    input[6] = input[30];

                input[30] = temp;

             ......

                     input[2] = (byte)((input[2] - input[0]) >= 0 ? (input[2] - input[0]) : (input[2] - input[0] + 256));

其实质仍然是一维数组input[]与一个二维数组m_nAntiLinearTransMatrixBox的乘积,那么为什么不用以下更精炼的代码呢?

Byte[] temp = new byte[input.length];

For (j=0;j<16;j++)

 For (k=0;k<16;k++)

    {

      Temp[2*j] +=(byte)(input[2*k] * m_nAntiLinearTransMatrixBox[k,j]);

}

For (j=0;j<16;j++)

{

   Input[2*j] = (byte)temp[2*j];

}

其中:

Static public byte[,] m_nAntiLinearTransMatrixBox = newbyte[16,16]

{

 {2,-2,1,-2,1,-1,4,-8,2,-4,1,-1,1,-2,1,-1},

 {-4,4,-2,4,-2,2,-8,16,-2,4,-1,1,-1,2,-1,1},

 {1,-2,1,-1,2,-4,1,-1,1,-1,1,-2,2,-2,4,-8},

 {-2,4,-2,2,-2,4,-1,1,-1,1,-1,2,-4,4,-8,16},

 {1,-1,2,-4,1,-1,1,-2,1,-2,1,-1,4,-8,2,-2},

 {-1,1,-2,4,-1,1,-1,2,-2,4,-2,2,-8,16,-4,4},

 {2,-4,1,-1,1,-2,1,-1,2,-2,4,-8,1,-1,1,-2},

 {-2,4,-1,1,-1,2,-1,1,-4,4,-8,16,-2,2,-2,4},

 {1,-1,1,-2,1,-1,2,-4,4,-8,2,-2,1,-2,1,-1},

 {-1,1,-1,2,-1,1,-2,4,-8,16,-4,4,-2,4,-2,2},

 {1,-2,1,-1,4,-8,2,-2,1,-1,1,-2,1,-1,2,-4},

 {-1,2,-1,1,-8,16,-4,4,-2,2,-2,4,-1,1,-2,4},

 {4,-8,2,-2,1,-2,1,-1,1,-2,1,-1,2,-4,1,-1},

 {-8,16,-4,4,-2,4,-2,2,-1,2,-1,1,-2,4,-1,1},

 {1,-1,4,-8,2,-2,1,-2,1,-1,2,-4,1,-1,1,-2},

 {-2,2,-8,16,-4,4,-2,4,-1,1,-2,4,-1,1,-1,2}

 }

上一页  4 5 6 7 8 9 10  下一页

Tags:分组 密码 SAFER

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接