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

分组密码SAFER+的C#实现

 2009-02-27 08:18:34 来源:WEB开发网   
核心提示: 接着进行线性层运算,即将input数组右乘矩阵m_LinearTransMatrixBox(该矩阵的说明详见参考文献[1]),分组密码SAFER+的C#实现(6),代码如下:input[2] = (byte)((input[2] + input[0]) & 0xFF);input[0] =

接着进行线性层运算,即将input数组右乘矩阵m_LinearTransMatrixBox(该矩阵的说明详见参考文献[1]),代码如下:

input[2] = (byte)((input[2] + input[0]) & 0xFF);

input[0] = (byte)((input[0] + input[2]) & 0xFF);

    ......

   temp = input[30];

      input[30] = input[6];

         input[6] = temp;

其实这段繁杂的代码就是一维数组input[]与一个二维数组m_LinearTransMatrixBox[][]的乘积,那么为什么不用以下更精炼的代码呢?

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_nLinearTransMatrixBox[k,j]);

}

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

{

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

}

其中:

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

{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:分组 密码 SAFER

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