Documente Academic
Documente Profesional
Documente Cultură
Lucrare de laborator
Sarcina: Criptati si decriptati un mesaaj de 128 de biti (strict 16
simboluri) va incepe mesajul cu inițialele studentului (Roman
Moraru-RM) alte date le selectati la alegere.
Criptarea
43 65 6D 69 72 74 61 6E 45 64 75 61 72 64 4D 44
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
Stare initiala: 43 72 45 72
65 74 64 64
6D 61 75 4D
69 6E 61 44
W: 0 00 01 02 03
1 04 05 06 07
2 08 09 0a 0b
3 0c 0d 0e 0f
W[4]:
Temp = W[3] = 0c 0d 0e 0f
Temp = SubWord(RotWord(Temp))
Temp = d7 ab 76 fe
Temp = Temp XOR Rcon[1]
Temp = d6 ab 76 fe
W[4] = 00 01 02 03 XOR d6 ab 76 fe
W[4] = d6 aa 74 fd
W[5]:
Temp = W[4] = d6 aa 74 fd
W[5] = 04 05 06 07 XOR d6 aa 74 fd
W[5] = d2 af 72 fa
W[6]:
Temp = W[5] = d2 af 72 fa
W[6] = 08 09 0a 0b XOR d2 af 72 fa
W[6] = da a6 78 f1
W[7]:
Temp = W[6] = da a6 78 f1
W[7] = 0c 0d 0e 0f XOR da a6 78 f1
W[7] = d6 ab 76 fe
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
8 …
AddRoundKey:
round = 0
Starea initiala: 6d 76 73 6f
72 61 61 61
69 74 7a 72
6e 61 62 65
Cheia utilizata: 00 01 02 03
04 05 06 07
08 09 0a 0b
0c 0d 0e 0f
Starea obtinuta: 6d 76 61 62
77 64 7D 6C
71 67 70 6C
6C 66 79 6A
Runda 1:
ByteSub:
Starea initiala:
6d 76 61 62
77 64 7D 6C
71 67 70 6C
6C 66 79 6A
Starea obtinuta: 3c 38 ef aa
F5 43 ff 50
A3 85 51 50
50 33 B6 02
ShiftRow:
Starea initiala:
3c 38 ef aa
F5 43 ff 50
A3 85 51 50
50 33 B6 02
Starea obtinuta: 3c 38 ef aa
43 ff 50 F5
51 50 A3 85
02 50 33 B6
MixColumn:
AddRoundKey
Starea initiala: E3 28D 1BE 3B8
4B 166 195 79
DB 97 160 377
A2 A7 258 E2
Cheia utilizata: d6 aa 74 fd
d2 af 72 fa
da a6 78 f1
d6 ab 76 fe
[...]
Decriptarea
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
8 …
[...]
Runda 1:
AddRoundKey
Cheia utilizata: d6 aa 74 fd
d2 af 72 fa
da a6 78 f1
d6 ab 76 fe
InvMixColumn
a0,0 = 21 + 31 + e4 + e3 = 3C
a1,0 = 3a + a1 + e2 + 53 = 43
a2,0 = 23 + 92 + e6 + 1f = 51
a3,0 = d2 + 2c + e1 + 68 = 02
a0,1 = 31 + c2 + 2d + 6e = 38
a1,1 = d1 + 21 + 13 + e9 = FF
a2,1 = 2d + 51 + 9c +14 = 50
a3,1 = 34 + 12 + 2c + c2 = 50
a0,2 = 3e + 51 + 18 + e2 = EF
a1,2 = 4c + 8a + de + 0e = 50
a2,2 = 59 + 1c + 2f + 22 = A3
a3,2 = 05 + 12 + 11 + e2 = 33
a0,3 = c2 + 6f + c6 + ca = AA
a1,3 = 02 + cc + e1 + c1 = F5
a2,3 = a2 + ce + 41 + 21 = 85
a3,3 = c2 + fa + 14 + 1c = B6
Starea obtinuta: 3c 38 ef aa
43 ff 50 F5
51 50 A3 85
02 50 33 B6
InvShiftRow
Starea initiala:
3c 38 ef aa
43 ff 50 F5
51 50 A3 85
02 50 33 B6
Starea obtinuta: 3c 38 ef aa
F5 43 ff 50
A3 85 51 50
50 33 B6 02
InvByteSub:
Starea initiala:
3c 38 ef aa
F5 43 ff 50
A3 85 51 50
50 33 B6 02
Starea obtinuta: 6d 76 61 62
77 64 7D 6C
71 67 70 6C
6C 66 79 6A
Sfirsitul ciclului
AddRoundKey (final)
Starea initiala: 6d 76 61 62
77 64 7D 6C
71 67 70 6C
6C 66 79 6A
Cheia utilizata: 00 01 02 03
04 05 06 07
08 09 0a 0b
0c 0d 0e 0f
Starea obtinuta: 6d 76 73 6f
72 61 61 61
69 74 7a 72
6e 61 62 65
Mesajul obtinut: 6d 72 69 6e 76 61 74 61 73 61 7a 62 6f 61 72 65