AES (стандарт шифрования): различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Строка 227:
 
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><pre>
KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr+1)], Nk)
begin
word temp
i = 0;
while ( i < Nk)
w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3])
i = i + 1
end while
i = Nk
 
while ( i < Nb * (Nr+1))
temp = w[i - 1]
if (i mod Nk = 0)
temp = SubWord(RotWord(temp)) xor Rcon[i / Nk]
else if (Nk > 6 and i mod Nk = 4)
temp = SubWord(temp)
end if
w[i] = w[i - Nk] xor temp
i = i + 1
end while
Строка 255:
<blockquote style="background: white; border: 1px solid black; padding: 1em;"><pre><nowiki>
 
InvCipher(byte in[4 * Nb], byte out[4 * Nb], word w[Nb * (Nr+1)])
begin
byte state[4, Nb]
state = in
 
AddRoundKey(state, w[Nr * Nb, Nb * (Nr+1)*Nb - 1])
 
for round = Nr - 1 step -1 downto 1
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[round * Nb, Nb * (round+1)*Nb - 1])
InvMixColumns(state)
end for
Строка 272:
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[0, Nb - 1])
 
out = state