在python中调用函数

时间:2013-10-25 19:59:33

标签: python sage

我是全新的编程人员,我在网上发现这个代码我知道它的语法是正确的但我不知道如何调用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;

1 个答案:

答案 0 :(得分:0)

  

我知道它的语法是正确的

不,不是。

  

我不知道如何调用SAES_FromStateMatrix

只需SAES_FromStateMatrix(state_matrix),其中state_matrix是某个矩阵。

  

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

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