ребята, я совершенно не знаком с программированием, я нашел этот код в сети, я знаю, что его синтаксис правильный, но я не знаю, как вызвать функцию 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;
'L. 'Недействительный синтаксис Python, AFAIK (строка 2) –
Я также сомневаюсь в строке 3. Хотя и корректно, не нужно помещать'; 'после каждой строки в Python. – MacUsers
В пользу Python, но Sage-неопытных читателей: 'L. = GF (2^4) 'является синтаксисом Sage. Подготовитель Sage преобразует это значение в 'L = GF (Integer (2) ** Integer (4), names = ('a',)); (a,) = L._first_ngens (1) 'за кулисами. – DSM