-4

伙计们,我对编程完全陌生,我在网上找到了这段代码,我知道它的语法是正确的,但我不知道如何调用该SAES_FromStateMatrix函数,所以请帮助我这里是代码

 F = GF(2);
 L.<a> = GF(2^4);
 V = L.vector_space();
 VF8 = VectorSpace(F, 8);
 MixColumns_matrix = Matrix(L, [[1,a^2],[a^2,1]]);
 InverseMixColumns_matrix = MixColumns_matrix.inverse();
 SBox_matrix = Matrix(L, 
                      [
                      [       1 + a^3,           a^2,           a + a^3, 1 + a + a^3],
                      [ 1 + a^2 + a^3,             1,               a^3,     1 + a^2],
                      [       a + a^2,             a,                 0,       1 + a],
                      [     a^2 + a^3, a + a^2 + a^3, 1 + a + a^2 + a^3, 1 + a + a^2]
                      ]);
InverseSBox_matrix = Matrix(L,
                      [
                      [   a + a^3,     1 + a^2,       1 + a^3,       1 + a + a^3],
                      [         1, 1 + a + a^2,           a^3, 1 + a + a^2 + a^3],
                      [   a + a^2,           0,             a,             1 + a],
                      [ a^2 + a^3,         a^2, 1 + a^2 + a^3,     a + a^2 + a^3]
                      ]);
RCON = [
VF8([F(0), F(0), F(0), F(0), F(0), F(0), F(0), F(1)]),
VF8([F(0), F(0), F(0), F(0), F(1), F(1), F(0), F(0)])
   ];      
def SAES_ToStateMatrix(block):
    B = block
    S00 = L(V([B[0], B[1], B[2], B[3]]));
    S01 = L(V([B[4], B[5], B[6], B[7]]));
    S10 = L(V([B[8], B[9], B[10], B[11]]));
    S11 = L(V([B[12], B[13], B[14], B[15]]));
    state_matrix = Matrix(L, [[S00,S01],[S10,S11]]);
  return state_matrix;
def SAES_FromStateMatrix(state_matrix):
   output = [];
   for r in xrange(2):
    for c in xrange(2):
        v = V(state_matrix[r,c]);
        for j in xrange(4):
            output.append(Integer(v[j]));
 return output;
4

1 回答 1

0

我知道它的语法是正确的

不,这不对。

我不知道如何调用 SAES_FromStateMatrix

只要做一些矩阵SAES_FromStateMatrix(state_matrix)在哪里。state_matrix

我的意思是如何在函数中传递矩阵......在其他意义上 SAES_FromStateMatrix(what_is_the_syntax_of_this_parameter)

使用与您发布的代码中已存在的语法相同的语法。您发布的大部分代码都是矩阵示例。或者,使用已分配矩阵的变量,例如SBox_matrix.

于 2013-10-25T20:02:38.803 回答