АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. Линейные уравнения второго порядка с постоянными коэффициентами
  2. ОЛДУ и НЛДУ второго порядка с постоянными коэффициентами
  3. ОЛДУ с постоянными коэффициентами.

Полиномы могут быть определены с коэффициентами из 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'. Имеем:

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


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)