Question

guys i am totally new to programming , i have found this code in the net i know it's syntax is correct but i don't know how to call the SAES_FromStateMatrix function so please help me here is the code

 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;
Was it helpful?

Solution

i know it's syntax is correct

No, it's not.

i don't know how to call the SAES_FromStateMatrix

Just do SAES_FromStateMatrix(state_matrix) where state_matrix is some matrix.

i mean how to pass a matrix in functions ... in other meaning SAES_FromStateMatrix(what_is_the_syntax_of_this_parameter)

Use the same syntax as already exists in the code you posted. Most of the code you posted is examples of matrices. Alternatively, use a variable which has been assigned a matrix, like SBox_matrix.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top