Помощь в учёбе, очень быстро...
Работаем вместе до победы

Операция сдвига строк Shift Rows* ()

РефератПомощь в написанииУзнать стоимостьмоей работы

При выполнении этой операции столбцы данных рассматриваются как многочлены над GF (24) и умножаются по модулю х2(c)1 на многочлен g (x), выглядящий следующим образом: Где с — номер столбца массива данных. В результате такого умножения полубайты столбца Soc и S|C заменяются соответственно на полубайты: На рис. 61 наглядно показано преобразование исходного столбца Sio в столбец S;o' с помощью… Читать ещё >

Операция сдвига строк Shift Rows* () (реферат, курсовая, диплом, контрольная)

Эта операция осуществляется аналогично одноименной операции в алгоритме шифрования AES, т. е. первая строка массива данных остается без изменений, а вторая циклически сдвигается влево на один полубайт. На рис. 59 показано применение операции Shift Rows*() к шифруемым данным.

Операция перемешивания столбцов Mix Columns*()

При выполнении этой операции столбцы данных рассматриваются как многочлены над GF (24) и умножаются по модулю х2(c)1 на многочлен g (x), выглядящий следующим образом:

Операция сдвига строк Shift Rows* ().

Это может быть представлено в матричном виде следующим образом:

Операция сдвига строк Shift Rows* ().

где с — номер столбца массива данных. В результате такого умножения полубайты столбца Soc и S|C заменяются соответственно на полубайты:

Операция сдвига строк Shift Rows* ().

На рис. 60 показано применение операции Mix Columns*() к данным, преобразуемым в ходе зашифрования.

Преобразование данных с помощью операции Shift Rows*().

Рис. 59. Преобразование данных с помощью операции Shift Rows*().

Применение операции Mix Columns*() к преобразуемым данным 112.

Рис. 60. Применение операции Mix Columns*() к преобразуемым данным 112.

Рассмотрим операцию Mix Columns*() более подробно. Пусть нам надо преобразовать столбец:

Операция сдвига строк Shift Rows* ().

Первым делом необходимо представить полубайты Soo и S ю в виде многочленов в поле GF (24). Многочлен (х3(c)х2) будет эквивалентен байту S0o = {с}, а многочлен (х3Ф1) — байту S, o={9}.

Для нахождения значения S0o' необходимо выполнить следующие действия:

1. Умножить многочлен (xJ(c)x2) на полубайт {3} или, иначе говоря, на (х®1) по модулю (х4®х®1):

Операция сдвига строк Shift Rows* ().

2. Умножить многочлен (хЗ (c)1) на полубайт {2} или, иначе говоря, на х по модулю (х4(c)х (c)1):

Операция сдвига строк Shift Rows* ().

3. Сложить по модулю 2 многочлены, полученные в пн. 1.

и 2:

Операция сдвига строк Shift Rows* ().

Искомым значением Soo' будет являться многочлен х2(c)х или полубайт {6}.

Теперь найдем значение S ю'. Для этого:

1. Умножим многочлен (xJ(c)x2) на полубайт {2} или, иначе говоря, на х по модулю (х4(c)х (c)1):

Операция сдвига строк Shift Rows* ().

2. Умножим многочлен (хЗ (c)1) на полубайт {3} или, иначе говоря, на (х (c)1) по модулю (х4(c)х (c)1):

Операция сдвига строк Shift Rows* ().

  • 3. Сложим по модулю 2 многочлены, полученные в пп. 1 и
  • 2:
Операция сдвига строк Shift Rows* ().

Таким образом, искомым значением Si0' будет являться многочлен х© 1 или полубайт {3}.

На рис. 61 наглядно показано преобразование исходного столбца Sio в столбец S;o' с помощью операции Mix Columns*().

Преобразование столбца с помощью о перации Mix Columns*().

Рис. 61. Преобразование столбца с помощью о перации Mix Columns*().

Показать весь текст
Заполнить форму текущей работой