|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Полиномы с коэффициентами из GF
Полиномы могут быть определены с коэффициентами из GF(28). В этом случае четырехбайтный вектор соответствует полиному степени 4. Полиномы могут быть сложены простым сложением соответствующих коэффициентов. Как сложение в GF(28) является побитовым XOR, так и сложение двух векторов является простым побитовым XOR. Умножение представляет собой более сложное действие. Предположим, что мы имеем два полинома в GF(28). a(x) = a3x3 + a2x2 + a1x + a0b(x) = b3x3 + b2x2 + b1x + b0c(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 + b0xx b(x) получается понижением предыдущего результата по модулю 1 + х4. Это дает b2x3 + b1x2 + b0x + b3Умножение на х эквивалентно умножению на матрицу, как описано выше со всеми ai = '00' за исключением а1 = '01'. Имеем: Следовательно, умножение на х соответствует циклическому сдвигу байтов внутри вектора. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |