Vous êtes sur la page 1sur 12

Вводимый текс (128 бит):Textul introdus

HO NGOC TRUNG -> in ASCII (на базе 10)


48 4f 20 4e 47 4f 43 20 54 52 55 4e 47 00 00 00
Cheia (128 biti):
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

Tabelul de mixare

Nb = 128/32 = 4
Nk = 128/32 = 4
Nr = 10
Stare initiala
48 47 54 47
4f 4f 52 00
20 43 55 00
4e 20 4e 00
Cheie (W):
0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
4 …
Extensie cheia
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)
Folosim tabelul de mixare
0d -> d7 , 0e -> ab , 0f -> 76, 0c -> fe
Obtinem 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

2
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
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

3
Criptare
AddRoundKey:
Stare[i,j]= Stare[i,j] XOR W[i,j]
Stare initiala
48 47 54 47
4f 4f 52 00
20 43 55 00
4e 20 4e 00
XOR
Utilizam cheia
00 01 02 03
04 05 06 07
08 09 0a 0b
0c 0d 0e 0f
Stare obtinuta
48 46 56 44
4b 4a 54 07
28 4a 5f 0b
42 2d 40 0f

Runde 1:
ByteSub:
Stare initiala
48 46 56 44
4b 4a 54 07
28 4a 5f 0b
42 2d 40 0f

4
Utilizam tabele de mixare

Obtinem starea:
52 5a b1 1b
b3 d6 20 c5
34 d6 cf 2b
2c d8 09 76

ShiftRow:
Stare initiala:
52 5a b1 1b <<<0
b3 d6 20 c5 <<<1
34 d6 cf 2b <<<2
2c d8 09 76 <<<3

Stare obtinuta ( in hexadecimal)

52 5a b1 1b
d6 20 c5 b3
cf 2b 34 d6
76 2c d8 09

5
Satre obtinuta: (Sistemul decimal)

82 90 177 27
214 32 197 179
207 43 52 214
118 44 216 32

52 5a b1 1b
d6 20 c5 b3
cf 2b 34 d6
76 2c d8 09

MixColumn:

Cream tabela:
2*s:
a4 82 55 36

9b 40 bd 51

a9 56 68 9b

ec 58 87 12

3*s:
f6 d8 e4 2d
4d 60 78 e2
66 7d 5c 4d
9a 74 5f 1b

6
Calculam S-mix:
s’[3,3] =
2 3 1 1 52 5a b1 1b
1 2 3 1 * d6 20 c5 b3
1 1 2 3 cf 2b 34 d6
3 1 1 2 76 2c d8 09

s’[0,0] = 2*52 + 3*d6 +cf + 76


= a4 + 4d + cf +76 = 50
s’[0,1] = 2*5a +3*20 + 2b + 2c
= 82 + 60 +2b +2c = e5
s’[0,2] = 2*b1 +3*c5 + 34 + d8
= 55 + 78 + 34 + d8 = c1
s’[0,3]= 2*1b + 3*b3 + d6 +09
= 36 + e2 + d6 + 09 = 0b
---------------
s’[1,0] = 52 + 2*d6 + 3*cf + 76
= 52 + 9b + 66 + 76 = d9
s’[1,1]= 5a + 2*20 + 3*2b + 2c
= 5a + 40 + 7d + 2c = 4b
s’[1,2]= b1 + 2*c5 + 3*34 + d8
= b1 + bd + 5c + d8 = 88
s’[1,3]= 1b + 2*b3 + 3*d6 +09
= 1b + 51 + 4d + 09 = 0e
----------------
s’[2,0]= 52 + d6 + 2*cf + 3*76
= 52 + d6 + a9 + 9a = b7
s’[2,1]= 5a + 20 + 2*2b + 3*2c
= 5a + 20 + 56 + 74 = 58
s’[2,2]= b1 + c5 + 2*34 + 3*d8
= b1 + c5 + 68 + 5f = 43
s’[2,3]= 1b + b3 + 2*d6 + 3*09
= 1b + b3 + 9b + 1b = 28
----------------

7
s’[3,0] = 3*52 + d6 + cf + 2*76
= f6 + d6 + cf + ec = 03
s’[3,1] = 3*5a + 20 + 2b + 2*2c
= d8 + 20 + 2b + 58 = 8b
s’[3,2] = 3*b1 + c5 + 34 + 2*d8
= e4 + c5 + 34 + 87 = 92
s’[3,3] = 3*1b + b3 + d6 + 2*09
= 2d + b3 + d6 + 12 = 5a

Obtinem starea: s’[3,3]


50 e5 c1 0b

d9 4b 88 0e

b7 58 43 28
03 8b 92 5a

Runde finala:

AddRoundKey
Stare Initiala:
50 e5 c1 0b

d9 4b 88 0e

b7 58 43 28
03 8b 92 5a

8
Utilizam cheia: (Utimele 4 cuvinte din cheie):
d6 aa 74 fd
d2 af 72 fa
da a6 78 f1
d6 ab 76 fe
Obtinem stare:
d6 4f b5 f6
0b e4 fa f4
6d fe 3b d9
d5 20 e4 a4

Mesajul Criptat:
d6 4f b5 f6 0b e4 fa f4 6d fe 3b d9 d5 20 e4 a4

Decriptare
Mesaj Criptat: 18 98 14 9c d5 e7 83 1e 3f 5a cd 28 36 ab 73 02

Cheie (128 bit):


00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
W:

9
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
Stare initiala:
18 98 14 9c
d5 e7 83 1e
3f 5a cd 28
36 ab 73 2
Utitlizam cheia:
d6 aa 74 fd
d2 af 72 fa
da a6 78 f1
d6 ab 76 fe
Obtinem stare:
ce 32 60 61
7 48 f1 e4
e5 fc b5 d9
10 0 5 fc

InvMixColumn
Cream tabelul:
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

10
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
Calculam 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

Obtinem starea:
2c 9 12 71
43 da b6 29
7f d0 85 92
2c 85 0 6a

InvShiftRow
Stare initiala:
2c 9 12 71 <<<0
43 da b6 29 <<<3
7f d0 85 92 <<<2
2c 85 0 6a <<<1
Obtinem starea:
2c 9 12 71
43 da b6 29
7f d0 85 92
2c 85 0 6a

InvByteSub:
Stare initiala:

11
2c 9 12 71
43 da b6 29
7f d0 85 92
2c 85 0 6a
Obtinem starea:
42 40 39 2c
4c 64 7a 79
67 74 6b 60
67 52 58 42

AddRoundKey (последний)
Starea initiala:
42 40 39 2c
4c 64 7a 79
67 74 6b 60
67 52 58 42
Utilizam cheia:
00 01 02 03
04 05 06 07
08 09 0a 0b
0c 0d 0e 0f
Obtinem cheie:
42 4d 65 64
44 61 72 55
31 73 61 53
20 74 6e 4d

Mesajul obtinut: BD1 MasterandUSM

12

Vous aimerez peut-être aussi