Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
ShiftRows(S);
AddRoundKey(S,K[10])
Блок открытого текста, предназначенный для шифрования, записывается в виде матрицы состояний S. Полученный в результате алгоритма шифротекст представляется той же матрицей. В последнем раунде операция MixColumns не осуществляется.
Процедура расшифрования в псевдокоде:
AddRoundKey(S,K[10]);
InverseSubBytes(S);
InverseShiftRows(S);
For i:= 1 to 9 do Begin AddRoundKey(S,K[i]); InverseMixColumns(S); InverseShiftRows(S);
InverseSubBytes(S) End;
AddRoundKey(S,K[0])
Развертывание ключа.
Основной ключ алгоритма состоит из 128 битов, а нам нужно произвести 10 подключей K 1,..., K 10, каждый из которых включает в себя четыре 32-битовых слова. Здесь используется константа раунда RCi, вычисляющаяся по правилу
RCi = X i (mod X 8 + X 4 + X 3 + X + 1).
Обозначим i -ый подключ через (W 4 i , W 4 i+ 1, W 4 i+ 2, W 4 i+ 3,). Основной ключ алгоритма делится на четыре 32-битовых слова (k0, k1, k2, k3), после чего подключи получаются в результате выполнения прведенного ниже алгоритма. В нем через RotBytes обозначена процедура циклического сдвига слова влево на 1 байт, а через SubBytes – применение S-блока из этапа шифрования к каждому байту слова.
W[0]:=K[0]; W[1]:=K[1]; W[2]:=K[2]; W[3]:=K[3];
For i:=1 to 10 do Begin T:=RotBytes(W[4*i-1]); T:=SubBytes(T); T:=TÙRC[i];
W[4*i]:=W[4*i-4] ÙT;
W[4*i+1]:=W[4*i-3] Ù W[4*i];
W[4*i+2]:=W[4*i-2] Ù W[4*i+1];
W[4*i+3]:=W[4*i-1] Ù W[4*i+2]; End
Дата публикования: 2014-11-02; Прочитано: 453 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!