Вы находитесь на странице: 1из 9

METODA AES.

Chişinău 2019
Вводимый текс (128 бит):
BD1 MasterandUSM. -> in ASCII (на базе 10)
42 44 31 20 4d 61 73 74 65 72 61 6e 64 55 53 4d
Cheia (128 biti):
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

Nb = 128/32 = 4
Nk = 128/32 = 4
Nr = 10
Исходное состояние:
42 4d 65 64
44 61 72 55
31 73 61 53
20 74 6e 4d
Ключ (W):
0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 …
Расширение ключа:
1)row=Nk=4
temp = W[row-1]=W[4-1]=W[3] =0c0d0e0f
row%Nk=4%4=0 =>
temp = SubWord(RotWord(temp))
RotWord(temp) = 0c0d0e0f <<<1 = 0d0e0f0c
SubWord(RotWord(temp)) = SubWord(0d0e0f0c)
Используем таблицу замещения:
0d -> d7 , 0e -> ab , 0f -> 76, 0c -> fe
Получаем temp=SubWord(RotWord(temp)) = d7ab76fe
temp = temp XOR Rcon[row/Nk] = temp XOR Rcon[4/4] = temp XOR Rcon[1] = d7ab76fe xor
01000000 = D6AB76FE
W[4] = W[row-Nk] xor temp = W[4-4] xor temp = W[0] xor temp = 00010203 xor D6AB76FE
= D6AA74FD
W:
0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 D6 AA 74 FD
2)row=row+1=4+1=5
temp = W[row-1]=W[5-1]=W[4] = D6AA74FD
row%Nk=5%4=1, Nk<>8, row%Nk<>4 =>
W[5] = W[5- Nk] XOR Temp = W[5-4] xor temp = 04050607 XOR d6aa74fd = d2 af 72 fa
W:
0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 D6 AA 74 FD
5 d2 af 72 fa
3)row=row+1=5+1=6
temp = W[row-1]=W[6-1]=W[5] = d2af72fa
row% Nk =6%4=2≠0 =>
W[6] = W[6- Nk] XOR temp = W[2] XOR temp = 08090a0b XOR d2af72fa = daa678f1
W:
0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 D6 AA 74 FD
5 d2 af 72 fa
6 da a6 78 f1
4)row=row+1=6+1=7
row% Nk = 7%4=3≠0
2
W[7] = W[7- Nk] XOR temp = W[3] XOR temp =0c0d0e0f XOR daa678f1 = d6ab76fe
W:
0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 d6 aa 74 fd
5 d2 af 72 fa
6 da a6 78 f1
7 d6 ab 76 fe

Шифрование
AddRoundKey:
Stare[i,j]= Stare[i,j] XOR W[round*4+j,i]
round = 0
Исходное состояние:
42 4d 65 64
44 61 72 55
31 73 61 53
20 74 6e 4d
XOR
Используемый ключ:
00 01 02 03
04 05 06 07
08 09 0a 0b
0c 0d 0e 0f
Полученное состояние:
42 40 39 2c
4c 64 7a 79
67 74 6b 60
67 52 58 42

Раунд 1:
ByteSub:
Исходное состояние:
3
42 40 39 2c
4c 64 7a 79
67 74 6b 60
67 52 58 42
Используем таблицу замещения.

Полученное состояние:
2c 09 12 71
29 43 da B6
85 92 7f D0
85 00 6a 2c

ShiftRow:
Исходное состояние:
2c 09 12 71 <<<0
29 43 da B6 <<<1
85 92 7f D0 <<<2
85 00 6a 2c <<<3

Полученное состояние: (Шестнадцатеричная система)

2c 09 12 71
43 da B6 29
7f D0 85 92
2c 85 00 6a

Полученное состояние: (Десятеричная система)

44 09 18 113
67 218 182 41
127 208 133 146
44 133 00 106

MixColumn:
Создаем Таблицу:
2*a:

4
58 12 24 e2
86 af 77 52
fe bb 11 3f
58 11 0 d4

3*a:
74 1b 36 93
c5 75 c1 7b
81 6b 94 ad
74 94 0 be
Считаем b:

b[0,0]=58+c5+7f+2c=ce b[0,1]=12+75+d0+85=32
b[1,0]=86+81+2c+2c=07 b[1,1]=af+6b+85+09=48
b[2,0]=fe+74+2c+43=e5 b[2,1]=bb+94+09+da=fc
b[3,0]=58+74+43+7f=10 b[3,1]=11+1b+da+d0=0

b[0,2]=24+c1+85+0=60 b[0,3]=e2+7b+92+6a=61
b[1,2]=77+94+0+12=f1 b[1,3]=52+ad+6a+71=e4
b[2,2]=11+0+12+b6=b5 b[2,3]=3f+be+71+29=d9
b[3,2]=0+36+b6+85=5 b[3,3]=d4+93+29+92=fc

Полученное состояние:
ce 32 60 61
7 48 f1 e4
e5 fc b5 d9
10 0 5 fc
AddRoundKey
Исходное состояние:
ce 32 60 61
7 48 f1 e4
e5 fc b5 d9
e0 0 5 fc

Используемый ключ: (Последние 4 ключевых слова):


d6 aa 74 fd
d2 af 72 fa
da a6 78 f1
d6 ab 76 fe
Полученное состояние:
18 98 14 9c
d5 e7 83 1e

5
3f 5a cd 28
c6 ab 73 2

Зашифрованное сообщение: 18 98 14 9c d5 e7 83 1e 3f 5a cd 28 c6 ab 73 02

Дешифровка
Зашифрованное сообщение: 18 98 14 9c d5 e7 83 1e 3f 5a cd 28 36 ab 73 02

Ключ (128 бит):


00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
W:
0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 d6 aa 74 fd
5 d2 af 72 fa
6 da a6 78 f1
7 d6 ab 76 fe

Раунд 1:
AddRoundKey
Исходное состояние:
18 98 14 9c
d5 e7 83 1e
3f 5a cd 28
36 ab 73 2
Используемый ключ:
d6 aa 74 fd
d2 af 72 fa
da a6 78 f1
d6 ab 76 fe
Полученное состояние:
ce 32 60 61
7 48 f1 e4
e5 fc b5 d9
10 0 5 fc

6
InvMixColumn
Создаем Таблицу:
14*b = 2*2*2*b+2*2*b+2*b

b8 27 76 78
2a dd d9 f
1 9f 4c 72
e0 36 36 9f
11*b=2*2*2*b+2*b+b
63 dd 8d 86
31 ae c1 56
5d be 1b e2
b0 0 27 be
13*b=2*2*2*b+2*2*b+b
f1 71 d6 db
23 5 d1 38
35 80 88 2
d0 0 39 80
9*b=2*2*2*b+b
e4 b9 4d 44
3f 3e 38 85
8c 5d 6a 4b
90 0 2d 5d
Считаем a:
a[0,0]=b8+31+35+90=2c a[0,1]=27+ae+80+0=9
a[1,0]=2a+5d+d0+e4=43 a[1,1]=dd+be+0+b9=da
a[2,0]=1+b0+f1+3f=7f a[2,1]=9f+0+71+3e=d0
a[3,0]=e0+63+23+8c=2c a[3,1]=0+dd+5+5d=85

a[0,2]=76+c1+88+2d=12 a[0,3]=78+56+2+5d=71
a[1,2]=d9+1b+39+4d=b6 a[1,3]=f+e2+80+44=29
a[2,2]=4c+27+d6+38=85 a[2,3]=72+be+db+85=92
a[3,2]=36+8d+d1+6a=0 a[3,3]=9f+86+38+4b=6a

Полученное состояние:
2c 9 12 71
43 da b6 29
7f d0 85 92
2c 85 0 6a

InvShiftRow
Исходное состояние:

7
2c 9 12 71 <<<0
43 da b6 29 <<<3
7f d0 85 92 <<<2
2c 85 0 6a <<<1
Полученное состояние:
2c 9 12 71
43 da b6 29
7f d0 85 92
2c 85 0 6a

InvByteSub:
Исходное состояние:
2c 9 12 71
43 da b6 29
7f d0 85 92
2c 85 0 6a
Полученное состояние:
42 40 39 2c
4c 64 7a 79
67 74 6b 60
67 52 58 42

AddRoundKey (последний)
Исходное состояние:
42 40 39 2c
4c 64 7a 79
67 74 6b 60
67 52 58 42
Используемый ключ:
00 01 02 03
04 05 06 07
08 09 0a 0b
0c 0d 0e 0f
Полученное состояние:
42 4d 65 64
44 61 72 55
31 73 61 53

8
20 74 6e 4d

Полученное сообщение: BD1 MasterandUSM

Вам также может понравиться