-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 に答える