2013-10-25 109 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) –