2013-10-25 5 views
-4

ребята, я совершенно не знаком с программированием, я нашел этот код в сети, я знаю, что его синтаксис правильный, но я не знаю, как вызвать функцию SAES_FromStateMatrix, поэтому, пожалуйста, помогите мне вот кодвызов функции в python

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; 

ответ

0

я знаю, что синтаксис является правильным

нет, это не так.

я не знаю, как назвать SAES_FromStateMatrix

Вобще SAES_FromStateMatrix(state_matrix) где state_matrix некоторая матрица.

я имею в виду, как передать матрицу в функции ... в другом означающего SAES_FromStateMatrix (what_is_the_syntax_of_this_parameter)

Используйте тот же синтаксис, как уже существует в коде, который отвечал. Большинство кода, который вы отправили, являются примерами матриц. Альтернативно, используйте переменную, которой была назначена матрица, например SBox_matrix.

+0

Я имею в виду, как вызвать матрицу –

+0

У вас нет функции под названием 'matrix'. Что именно ты пытаешься сделать? – kindall

+0

Я имею в виду, как передать матрицу в функции ... в другом значении SAES_FromStateMatrix (what_is_the_syntax_of_this_parameter) –

Смежные вопросы