Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Полиномы с коэффициентами из GF




Полиномы могут быть определены с коэффициентами из GF(28). В этом случае четырехбайтный вектор соответствует полиному степени 4.

Полиномы могут быть сложены простым сложением соответствующих коэффициентов. Как сложение в GF(28) является побитовым XOR, так и сложение двух векторов является простым побитовым XOR.

Умножение представляет собой более сложное действие. Предположим, что мы имеем два полинома в GF(28).

a(x) = a3x3 + a2x2 + a1x + a0b(x) = b3x3 + b2x2 + b1x + b0

c(x) = a(x) b(x) определяется следующим образом:

с(x) = с6x6 + с5x5 + с4x4 + с3x3 + с2x2 + с1x + с0 с0 = a0 • b0с1 = a1 • b0 a0 • b1с2 = a2 • b0 a1 • b1 a0 • b2с3 = a3 • b0 a2 • b1 a1 • b2 a0 • b3с4 = a3 • b1 a2 • b2 a1 • b3с5 = a3 • b2 a2 • b3с6 = a3 • b3

Ясно, что в таком виде с(х) не может быть представлен четырехбайтным вектором. Понижая с(х) по модулю полинома 4-й степени, результат может быть полиномом степени ниже 4. В Rijndael это сделано с помощью полинома

M(x) = x4 + 1

так как

xj mod (x4 + 1) = xj mod 4

Модуль, получаемый из а(х) и b(x), обозначаемый d(x) = a(x) b(x), получается следующим образом:

d0 = a0 • b0 a3 • b1 a2 • b2 a1 • b3d1 = a1 • b0 a0 • b1 a3 • b2 a2 • b3d2 = a2 • b0 a1 • b1 a0 • b2 a3 • b3d3 = a3 • b0 a2 • b1 a1 • b2 a0 • b3

Операция, состоящая из умножения фиксированного полинома а(х), может быть записана как умножение матрицы, где матрица является циклической. Мы имеем

Замечание: х4 + 1 не является несократимым полиномом в GF (28), следовательно, умножение на фиксированный полином необязательно обратимо. В алгоритме Rijndael выбран фиксированный полином, который имеет обратный.

Умножение на х

При умножении b(x) на полином х будем иметь:

b3x4 + b2x3 + b1x2 + b0x

x b(x) получается понижением предыдущего результата по модулю 1 + х4.

Это дает

b2x3 + b1x2 + b0x + b3

Умножение на х эквивалентно умножению на матрицу, как описано выше со всеми ai = '00' за исключением а1 = '01'. Имеем:

Следовательно, умножение на х соответствует циклическому сдвигу байтов внутри вектора.




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 541; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.