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

Многочлены для ByteSub

Читайте также:
  1. Бесконечно малые и бесконечно большие функции
  2. Графики основных элементарных функций
  3. Деление многочлена на двучлен. Схема Горнера (с выводом), следствия.
  4. ИНТЕГРИРОВАНИЕ РАЦИОНАЛЬНЫХ ДРОБЕЙ
  5. Интегрирование рациональных дробей общего вида
  6. Интегрирование рациональных дробей.
  7. Конечные поля
  8. Лекция 7.
  9. Наклонные асимптоты графика функции
  10. Опис алгоритму шифрування RIJNDAEL
  11. Основные теоремы о пределах.

 

P(x) P1(x) C(x)
      1, 13

 

p(x) = 710 = 01112 = x2 + x + 1 = a10

p1(x) = 610 = 01102 = x2 + x = a5

 

Многочлен для MixColumn

 

c(x) = x + 13 = 0001 * x + 1101

 

 

Ключ К

 

i * 2 / 3 = 7 * 2 / 3 = a10 * a * a-4 = a11 * a11 = a15 * a7 = a7 = 10112

(i – k) / 7 = (7 - 1) / 7 = (0111 + 0001) * a-10 = 0110 * a5 = a5 * a5 = a10 = 01112

(3 * i + 4) / k = (3 * 7 + 4) / 1 = (a4 * a10 + 0010) = a14 + 0010 = 1001 + 0010 = 10112

i – 7 = 7 – 7 = 0

K = (1011 0111 1011 0000)

Открытый текст P

 

 

P = (0101 1110 0011 0010)

 

S преобразование и обратное для всех элементов

 

p(x) = 710 = 01112 = x2 + x + 1 = a10

p1(x) = 610 = 01102 = x2 + x = a5

S(x) = x-1 p + p1

 

S(0) = a5 = 0110

S(a) = a-1 a10 + a5 = a14 a10 + 0110 = a9 + 0110 = 1010 + 0110 = 1100

S(a2) = a-2 a10 + a5 = a13 a10 + 0110 = a8 + 0110 = 0101 + 0110 = 0011

S(a3) = a-3 a10 + a5 = a12 a10 + 0110 = a7 + 0110 = 1011 + 0110 = 1101

S(a4) = a-4 a10 + a5 = a11 a10 + 0110 = a6 + 0110 = 1100 + 0110 = 1010

S(a5) = a-5 a10 + a5 = a10 a10 + 0110 = a5 + 0110 = 0110 + 0110 = 0000

S(a6) = a-6 a10 + a5 = a9 a10 + 0110 = a4 + 0110 = 0011 + 0110 = 0101

S(a7) = a-7 a10 + a5 = a8 a10 + 0110 = a3 + 0110 = 1000 + 0110 = 1110

S(a8) = a-8 a10 + a5 = a7 a10 + 0110 = a2 + 0110 = 0100 + 0110 = 0010

S(a9) = a-9 a10 + a5 = a6 a10 + 0110 = a1 + 0110 = 0010 + 0110 = 0100

S(a10) = a-10 a10 + a5 = a5 a10 + 0110 = 0001 + 0110 = 0111

S(a11) = a-11 a10 + a5 = a4 a10 + 0110 = a14 + 0110 = 1001 + 0110 = 1111

S(a12) = a-12 a10 + a5 = a3 a10 + 0110 = a13 + 0110 = 1101 + 0110 = 1011

S(a13) = a-13 a10 + a5 = a2 a10 + 0110 = a12 + 0110 = 1111 + 0110 = 1001

S(a14) = a-14 a10 + a5 = a1 a10 + 0110 = a11 + 0110 = 1110 + 0110 = 1000

S(a15) = a-15 a10 + a5 = a15 a10 + 0110 = a10 + 0110 = 0111 + 0110 = 0001

 

 

Обратные преобразования

S-1(0110) = 0 = 0000 S-1(1100) = a = 0010 S-1(0011) = a2 = 0100 S-1(1101) = a3 = 1000 S-1(1010) = a4 = 0011 S-1(0000) = a5 = 0110 S-1(0101) = a6 = 1100 S-1(1110) = a7 = 1011 S-1(0010) = a8 = 0101 S-1(0100) = a9 = 1010 S-1(0111) = a10 = 0111 S-1(1111) = a11 = 1110 S-1(1011) = a12 = 1111 S-1(1001) = a13 = 1101 S-1(1000) = a14 = 1001 S-1(0001) = a15 = 0001

 

 

Расширение ключа, цикловые константы

C[2] = RC[2] 0000 = a1 0000 =

C[4] = RC[4] 0000 = a3 0000 =

C[6] = RC[6] 0000 = a5 0000 =

 

 

W[0] = Key[0] =

W[1] = Key[1] =

W[2] = W[0] + SB(R(W[1])) + C[2] = + SB(R()) +

W[2] = + + =

W[3] = W[1] + W[2] = + =

W[4] = W[2] + SB(R(W[3])) + C[4] = + SB(R()) +

W[4] = + + =

W[5] = W[3] + W[4] = + =

W[6] = W[4] + SB(R(W[5])) + C[6] = + SB(R()) +

 

W[6] = + + =

Шифрование

0)

 

1.1) SubBytes

 

 

1.2) ShiftRow

 

 

1.3) MixColumn

 

c(x) = x + 13 = 0001 * x + 1101

 

 

=

 

=

 

=

 

 

1.4) AddRoundKey

W[2] = W[3] =

 

 

2.1) SubBytes

 

 

2.2) ShiftRow

2.3) AddRoundKey

 

W[4] = W[5] =

 

Зашифрованный текст

С = (5, 1, 5, 15)

 

Расшифровка

 

0) x = x + k2

1.1) x = r -> (x)

1.2) x = s-1 (x)

1.3) x = x + k1

1.4) x = m-1 x

2.1) x = r -> (x)

2.2) x = s-1 (x)

2.3) x = x + k0

 

0)

 

1.1) ShiftRow >

 

 

 

SubBytes

 

 

AddRoundKey

 

1.4) MixColumn

 

 

 

=

 

 

 

 

 

 

 

 

2.1) ShiftRow >

 

2.2) SubBytes

 

2.3) AddRoundKey

 

P = (0101 1110 0011 0010)

После шифровки и расшифровки был получен исходный открытый текст.


 

Пример выполнения Задания1. Упрощенный алгоритм Rijndael,.

 

 

ПОСТРОЕНИЕ ПОЛЯ

В приведенных арифметических выражениях вся арифметика в GF(24).

Неприводимый многочлен P(x) = x4+x+1.

Примитивный элемент a = x.

 

 

 



Обратные элементы:



ПАРАМЕТРЫ АЛГОРИТМА

i = 15, k = 1

Многочлены для ByteSub:

p1(x) = 12 = 1100 = x3 + x2

p0(x) = 4 = 0100 = x2

 

Многочлен для MixColumn:

с(x) = 6x + 11 = 0110*x + 1011

 

Открытый ключ К:

K = (10, 2, 6, 8)

   
   

Открытый текст:

 

P = (5, 14, 2, 7)

   
   

S-box и обратное преобразование:

 

=


Обратное преобразование:

;

;

; S-1:

Матрица М:

 

Матрица :

 

x     x-1 S(x) S-1(x)
           
α          
α2          
α3          
α4          
α5          
α6          
α7          
α8          
α9          
α10          
α11          
α12          
α13          
α14          
α15          

 

 

ВЫПОЛНЕНИЕ АЛГОРИТМА ШИФРОВАНИЯ

РАСШИРЕНИЕ КЛЮЧА (Key Expansion)

K = (10, 2, 6, 8)

   
   

 

W1    
W2    

 

 

;

;

W2 =

C4 =

____________

W4 =

 

W3    
W4    

 

;

;

W4 = 11110011

C6 = 01100000

____________

W6 = 01001011

W5    
W6    

 

; ; ;

 

 

ШИФРОВАНИЕ

·

·

·

·

·

·

·

·

 

Зашифрованный текст:

 

 

ДЕШИФРОВАНИЕ

·

·

·

·

·

·

·

·

 

Расшифрованный текст соответствует исходному.

 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

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



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