Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
На 10-й представлена блок-схема одного этапа FEAL. В качестве входа процесса шифрования используется 64-битовый блок открытого текста. Сначала блок данных подвергается операции XOR с 64 битами ключа. 3 а-
тем блок данных расщепляется не левую и правую половины. Объединение левой и правой половин с помощью XOR образует новую правую половину. Левая половина и новая правая половина проходят через п этапов (первоначально четыре). На каждом этапе правая половина объединяется с помощью функции f с шестнадцатью битами ключа и с помощью XOR - с левой половиной, создавая новую правую половину. Исходная правая п о-ловина (на начало этапа) становится новой левой половиной. После п этапов (не забывайте, что левая и правая половины не переставляются после n-го этапа) левая половина снова объединяется с помощью XOR с правой половиной, образуя новую правую половину, затем левая и правая соединяются вместе в 64-битовое целое. Блок данных объединяется с помощью XOR с другими 64 битами ключа, и алгоритм завершается.
32 бита
Lo{Re}
Ь {Ri} |
Lo{R8}
Открытый текст 64 бита i-
64 бита
(Кв. Кэ, Ко, Ки)
{(Kl2, Kl3, Kl4, Kb)}
—32 бита
*ф Ro{Le}
Ко {К/}
Ro{U}
Ki {/-/} |
К {Ke}
L7 {Ri}|
f
— Ki {Ко} RAU)
Rb{L0}
>Ф
LB{R0}
Ж 64 бита
(K12, K13, K14, Kb)
{(Kb, Kb, Ко, Kii)}
Шифротекст
(V Дешифрирование
Рис. 13-3. Один этап FEAL.
Функция f берет 32 бита данных и 16 битов ключа и смешивает их вместе. Сначала блок данных разбивается на 8-битовые кусочки, которые затем объединяются с помощью XOR и заменяют друг друга. Блок-схема фун к-ции f представлена на 9-й. Две функции S0h Si определяются следующим образом:
S0(a,b) = циклический сдвиг влево на два бита ((а + Ъ) mod 256)
Si(a,b) = циклический сдвиг влево на два бита((а + Ъ + 1) mod 256)
Ъ
f{ab}
So
I
So
Si
bo
Ф-Ф
e<—ф
a0
a
a
16 битов
a 32 бита
Si
a
Рис. 13-4. Функция f.
Тот же алгоритм может быть использован для дешифрирования. Единственным отличием является то, что при дешифрировании порядок использования частей ключа меняется на обратный.
На 8-й представлена блок-схема функции генерации ключа. Сначала 64-битовый ключ делится на две пол о-
вины, к которым применяются операции XOR и функции fh как показано на схеме. На 7-й показана блок-схема функции/*. Два 32-битовых входа разбиваются на 8-битовые блоки, объединяемые и заменяемые в соответс т-вии со схемой. S0 и Si определяются, как показано на рисунке. Затем в алгоритме шифрования/дешифрирования используются 16-битовые блоки ключа.
На микропроцессоре 80286/10 МГц ассемблерная реализация FEAL-32 может шифровать данные со скор о-стью 220 Кбит/с. FEAL-64 может шифровать данные со скоростью 120 Кбит/с [1104].
32 бита | Блок ключа J64 бита 32 бита | ||||
А0 | |||||
' | Во | ||||
г- L | |||||
Ко, К, | к р | ||||
А, 1 | • | ||||
' | в, | ||||
А | I- L | (Т>« | |||
Кг, К$ | Г | kV* | |||
< | ^ | | _:' | |||
А7 1 | ' | D7\ А, 32 бита | в7 | ||
KU, Ki5 < | ■ |
а0
X
Рис. 13-5. Обработка ключа в FEAL.
а 32 бита
a |
a |
~о< |
-е«- |
«X
Si
So |
й 32 бита
So h©<-х2
*ф—►
Si
аи й,. - 8 бит
Y
|32 бита
/ф,й)
Y=S0(X,X2)=Rot2((X+X2) mod 256) Y=Si(Xi,X2)=Rot2((Xi+X2+1) mod 256) Y: выходные 8 битов, хьХ2 (8 битов): входы Rot2(Y): циклический сдвиг влево на 2 бита 8-битовых данных у
Рис. 13-6. Функция/^.
Дата публикования: 2014-11-04; Прочитано: 253 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!