BAB II DASAR TEORI
Pada bagian ini akan dibahas mengenai dasar teori yang digunakan dalam pembuatan sistem yang akan dirancang dalam skripsi ini.
2.1. Enkripsi dan Dekripsi Proses menyandikan plaintext menjadi ciphertext disebut enkripsi (encryption) atau enciphering (standard nama menurut ISO 7498-2) sedangkan proses mengembalikan ciphertext mejadi plaintext disebut dekripsi (decryption) atau deciphering (standard ISO 7498-2).[2] Plaintext merupakan pesan atau data dalam bentuk aslinya yang dapat terbaca. Sedangkan Ciphertext merupakan pesan dalam bentuk tersembunyi. [1] Secara sederhana proses enkripsi - dekripsi dapat digambarkan sebagai berikut :
Gambar 2.1. Proses Enkripsi – Dekripsi
Sebelumnya akan dibahas mengenai beberapa istilah-istilah yang akan sering dipakai dalam pembuatan skripsi ini, di antaranya yaitu : 1.
Plaintext (P) merupakan pesan asli.
2.
Ciphertext (C) merupakan pesan terenkripsi yang merupakan hasil enkripsi.
3.
Enkripsi (E) merupakan proses pengubahan plaintext menjadi ciphertext.
4.
Dekripsi (D) adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal/asli.
5.
Kunci (K) adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi. 5
Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut : EK (P) = C (Proses Enkripsi) DK (C) = P (Proses Dekripsi)
Pada saat proses enkripsi kita menyandikan pesan P dengan suatu kunci K lalu dihasilkan pesan C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K sehingga dihasilkan pesan P yang sama seperti pesan sebelumnya. Terdapat dua jenis metode berdasarkan kunci yang akan digunakan saat proses enkripsi maupun dekripsi yaitu: 1.
Algoritma Simetrik Algoritma Simetrik adalah algoritma yang menggunakan kunci yang sama untuk
proses enkripsi maupun dekripsi. Dengan kata lain proses enkripsi dapat dihitung menggunakan kunci dekripsi dan begitu pula sebaliknya, proses dekripsi dapat dihitung menggunakan kunci enkripsi. Pada algoritma simetrik diperlukan kesepakatan antara pengirim dan penerima pesan pada suatu kunci sebelum dapat berkomunikasi secara aman. Algoritma simetrik dikelompokkan menjadi dua jenis, yaitu stream cipher dan block cipher. Stream cipher beroperasi bit per bit pada suatu waktu. Sedangkan block cipher beroperasi per kelompok-kelompok bit yang disebut blok pada suatu waktu.
2.
Algoritma Asimetrik Algoritma Asimetrik didesain untuk memudahkan distribusi kunci yang digunakan
dalam proses enkripsi dan dekripsi. Berbeda dengan algoritma simetrik, kunci dekripsi pada algoritma asimetrik secara praktis tidak dapat dihitung dari kunci enkripsi. Kunci pada algoritma ini dapat dibuat menjadi publik. Dimana setiap orang dapat menggunakan kunci enkripsi untuk mengenkripsi pesan, tetapi hanya orang yang memiliki kunci dekripsi yang dapat mendekripsi pesan tersebut. Pada algoritma ini kunci enkripsi sering disebut kunci publik, dan kunci dekripsi disebut kunci rahasia.
6
2.2. Advanced Encryption Standard (AES) Pada skripsi ini akan membahas Algoritma Simetrik lebih lanjut dikarenakan menggunakan metode Advanced Encryption Standard (AES) lebih baik dibanding dengan metode seperti Data Encryption Standard (DES) ataupun yang lainya yang ada pada algoritma simetrik. Pemilihan metode AES karena AES dinilai memiliki keamanan yang lebih baik daripada sistem sandi
DES. [1] Untuk itu NIST (National Institute of Standards and
Technology) membuat sayembara untuk menggantikan DES dengan sebuah sistem penyandian yang disebut Advanced Encryption Standard pada tanggal 12 September 1997. NIST memberikan spesifikasi AES, yaitu harus memiliki panjang blok 128 bit dan mampu mendukung panjang kunci 128,192,256. [1] Setelah beberapa seleksi, NIST memilih sistem penyandian Rijndael yang dikembangkan oleh Joan Daemen dan Vincent Rijment sebagai sistem penyandian AES pada tahun 2000. [1] AES merupakan standar enkripsi dekripsi dengan kunci simetris yang menggantikan pendahulunya yaitu DES. Jenis AES terbagi 3, yaitu AES-128, AES-192 dan AES-256. Angka-angka yang berada di belakang kata AES merupakan panjang kunci yang digunakan pada tiap-tiap AES. Selain itu AES-128 round yang digunakan sebanyak 10 round, AES-192 menggunakan 12 round, dan AES-256 menggunakan 14 round.
2.3. Contoh Perhitungan Pada contoh perhitungan akan dijelaskan tahap – tahap perhitungan AES, baik untuk proses enkripsi maupun dekripsi.
2.3.1 Menghitung Enkripsi AES Proses di dalam AES merupakan transformasi terhadap state. Sebuah teks asli dalam blok (128 bit) terlebih dahulu diorganisir sebagai state. Enkripsi AES adalah transformasi terhadap state secara berulang dalam beberapa ronde. State yang menjadi keluaran ronde k menjadi masukan untuk ronde ke k+1.
7
Secara garis besar, desain enkripsi AES dapat diberikan oleh gambar dibawah ini.
State
Ekspansi Kunci AES Kunci Asli
Pra Ronde
AddRoundKey
Ronde 1
SubBytes
ShiftRows
MixColumns
Ekspansi Kunci ke-1
AddRoundKey
Ronde 2
SubBytes
ShiftRows
dst
MixColumns
Ekspansi Kunci ke-2
AddRoundKey dst Ronde 10
SubBytes
ShiftRows
Ekspansi Kunci ke-10
AddRoundKey
State
Gambar 2.2. Struktur Enkripsi AES [1]
Pada awalnya teks asli direorganisasi sebagai sebuah state. Kemudian sebelum ronde 1 dimulai blok teks asli dicampur dengan kunci ronde ke-0 (transformasi ini disebut AddRoundKey). Setelah itu, ronde ke-1 sampai dengan ronde ke-(Nr-1) dengan Nr adalah jumlah ronde menggunakan 4 transformasi yaitu SubBytes, ShiftRow, MixColumns dan AddRoundKey. Pada ronde terakhir, yaitu ronde ke-Nr dilakukan transformasi serupa dengan ronde lain namun tanpa trasformasi MixColumns.[1] 8
Berikut ini merupakan tabel konstan Rcon dalam hexadecimal: Tabel 2.1. Tabel Konstan Rcon [1] 01 02 04 08 10 20 40 80
1b 36
00 00 00 00 00 00 00 00
00 00
00 00 00 00 00 00 00 00
00 00
00 00 00 00 00 00 00 00
00 00
Berikut merupakan cara memperoleh ekspansi kunci sebelum digunakan dalam proses perhitungan AES. 2b
28
ab
09
a0
88
23
2a
7e
ae
f7
cf
fa
54
a3
6c
15
d2
15
4f
fe
2c
39
76
16
a6
88
3c
17
b1
39
05
Kolom terakhir kunci awal ditukar ke atas satu kali menjadi : cf 4f
8a Disubtitusi menjadi
84
3c
eb
09
01
Setelah itu disubtitusi dengan tabel SubBytes kemudian di XOR dengan kolom ke-1 dan di XOR dengan kolom ke-1 pada tabel konstan Rcon sehingga menjadi : 2b 7e
8a XOR
84
01 XOR
00
a0 =
fa
15
eb
00
fe
16
01
00
17
Hasil SubBytes
Tabel Rcon
Kunci kolom ke-1
9
Lalu ambil data pada kolom ke-2 kunci awal dan di XOR dengan hasil sebelumnya. 28
a0
ae
XOR
fa
88 =
54
d2
fe
2c
a6
17
b1
Lalu ambil data pada kolom ke-3 kunci awal dan di XOR dengan hasil sebelumnya. ab
88
f7
XOR
54
23 =
a3
15
2c
39
88
21
39
Lalu ambil data pada kolom ke-4 kunci awal dan di XOR dengan hasil sebelumnya 09 cf
23 XOR
2a
a3
=
6c
4f
39
76
3c
39
05
Dan langkah diatas diulang dengan kolom ke-2 tabel konstan Rcon hingga selesai (kolom ke-10 tabel konstan Rcon). Berikut merupakan contoh data beserta perhitungan untuk masing-masing tahapan yang dilakukan pada AES: a.
Pre Round (Data xor Key) Data asli :
Key awal:
Hasil:
32
88 31
e0
2b 28
ab
09
19
a0
9a
e9
43
5a
31
37
7e
ae
f7
cf
3d
f4
c6
f8
f6
30 98
07
15 d2
15
4f
e3
e2
8d
48
a8
8d a2
34
16 a6
88
3c
be
2b
2a
08
10
b.
SubBytes Pada tahap ini hasil dari pre round disubtitusi dengan tabel berikut:
(Contoh: Data dengan hex 19 disubtitusi dengan tabel subtitusi menjadi d4) Tabel 2.2. Tabel Subtitusi untuk Transformasi Subbytes [1] 0 1 2 3 4 5 6 7 8 9 a b c d e f
0 63 ca b7 04 09 53 d0 51 cd 60 e0 e7 ba 70 e1 8c
1 7c 82 fd c7 83 d1 ef a3 0c 81 32 c8 78 3e f8 a1
2 77 c9 93 23 2c 00 aa 40 13 4f 3a 37 25 b5 98 89
3 7b 7d 26 c3 1a ed fb 8f ec dc 0a 6d 2e 66 11 0d
4 f2 fa 36 18 1b 20 43 92 5f 22 49 8d 1c 48 69 bf
5 6b 59 3f 96 6e fc 4d 9d 97 2a 06 d5 a6 03 d9 e6
6 6f 47 f7 05 5a b1 33 38 44 90 24 4e b4 f6 8e 42
7 c5 f0 cc 9a a0 5b 85 f5 17 88 5c a9 c6 0e 94 68
8 30 ad 34 07 52 6a 45 bc c4 46 c2 6c e8 61 9b 41
9 01 d4 a5 12 3b cb f9 b6 a7 ee d3 56 dd 35 1e 99
a 67 a2 e5 80 d6 be 02 da 7e b8 ac f4 74 57 87 2d
b 2b af f1 e2 b3 39 7f 21 3d 14 62 ea 1f b9 e9 0f
c fe 9c 71 eb 29 4a 50 10 64 de 91 65 4b 86 ce b0
d d7 a4 d8 27 e3 4c 3c ff 5d 5e 95 7a bd c1 55 54
e ab 72 31 b2 2f 58 9f f3 19 0b e4 ae 8b 1d 28 bb
f 76 c0 15 75 84 cf a8 d2 73 db 79 08 8a 9e df 16
Sehingga data setelah hasil pre-round di subtitusi dengan tabel menjadi:
c.
d4
e0
b8
1e
27
bf
b4
41
11
98
5d
52
ae
f1
e5
30
ShiftRows Pada tahap ini data yang dihasilkan pada tahap sebelumnya (SubBytes) digeser ke kiri
sesuai dengan gambar di bawah ini:
Gambar 2.3. Transformasi ShiftRows [1]
11
Sehingga data setelah hasil SubBytes di ShiftRows menjadi:
d.
d4
e0
b8
1e
bf
b4
41
27
5d
52
11
98
30
ae
f1
e5
MixColumns
[
] [
]
[
]
Syarat: -
Jika msb data berawalan dengan 1 maka di left shift dan xor tetap
-
Jika msb data berawalan dengan 0 maka di left shift tapi xor dihilangkan.
-
Tetapan untuk pengali 02 yaitu disubtitusi menjadi “xor 1B”
-
Karena 03 (11) merupakan 10 xor 01 maka akan dipecah menjadi pengali 02 (yang berarti juga akan disubtitusi menjadi xor 1B) dan 01
Contoh perhitungan perkaliannya: 1.
Perhitungan untuk baris ke-1
d4 . 02
11010100 xor 00011011
10101000 (di left shift dan xor tetap)
00011011 XOR
10110011
bf . 03
10111111 . ( 10 xor 01)
(10111111 . 10) xor (10111111 . 01)
(01111110 xor 00011011) xor 10111111
01100101 xor 10111111
11011010 12
5d . 01
01011101 . 01
01011101
30 . 01
00110000 . 00000001
00110000
Lalu hasil masing-masing di xor semua menjadi 10110011 11011010 01011101 00110000 xor 00000100 (dalam hex = 04)
2.
Perhitungan untuk baris ke-2
d4 . 01
11010100 . 00000001
11010100
bf . 02
10111111 . 10
01111110 . 10 (di left shift dan xor tetap)
01111110 xor 00011011
01100101
5d . 03
(01011101 . 10) xor (01011101 . 01)
10111010 (xor 1B dihilangkan) xor 01011101
11100111
30 . 01
00110000 . 00000001
00110000
13
Lalu hasil masing-masing di xor semua menjadi 11010100 01100101 11100111 00110000 xor 01100110
3.
Perhitungan untuk baris ke-3
d4 . 01
11010100 . 01
11010100
bf . 01
10111111 . 01
10111111
5d . 02
01011101 . 10
10111010 (hanya di left shift, xor dihilangkan)
30 . 03
(00110000 . 10) xor (00110000 . 01)
(01100000) xor (00110000)
01010000
Lalu hasil masing-masing di xor semua menjadi 11010100 10111111 10111010 01010000 xor 10000001
14
4.
Perhitungan untuk baris ke-4
d4 . 03
(11010100 . 10) xor (11010100 . 01)
(10101000 xor 00011011) xor (11010100)
10110011 xor 11010100
01100111
bf . 01
10111111 . 01
10111111
5d . 01
01011101 . 01
01011101
30 . 02
00110000 . 10
01100000 (hanya di left shift, xor dihilangkan)
Lalu hasil masing-masing di xor semua menjadi 01100111 10111111 01011101 01100000 xor 11100101
[
] [
]
[
]
[
] [
]
[
]
15
[
] [
]
[
]
Sehingga data setelah hasil ShiftRows di MixColumns menjadi:
e.
04
e0
48
28
66
cb
f8
06
81
19
d3
26
e5
9a
7a
4c
AddRoundKey Pada tahap ini hasil dari MixColumns di XOR dengan hasil Round Key ke-1 04
e0
48
28
a0
88
23
2a
66
cb
f8
06
fa
54
a3
6c
81
19
d3
26
fe
2c
39
76
e5
9a
7a
4c
17
b1
39
05
Sehingga hasilnya a4
68
6b
02
9c
9f
5b
6a
7f
35
ea
50
f2
2b
43
49
16
2.3.2 Menghitung Dekripsi AES Untuk proses dekripsi AES dapat diilustrasikan seperti berikut: State Kunci Asli AddRoundKey
InvSubBytes
Ronde 10
InvShiftRows
InvMixColumns Ekspansi Kunci ke-1 AddRoundKey
InvSubBytes
Ronde 9 dst
InvShiftRows dst InvMixColumns Ekspansi Kunci ke-9 AddRoundKey
InvSubBytes
Ronde 1
InvShiftRows Ekspansi Kunci ke-10
Pre - Ronde
AddRoundKey
State
Ekspansi Kunci AES
Gambar 2.4. Struktur Dekripsi AES [1] Secara ringkas algoritma dekripsi merupakan kebalikan algoritma enkripsi AES. Algoritma dekripsi AES menggunakan transformasi invers semua transformasi dasar yang digunakan pada algoritma
enkripsi AES. Setiap transformasi dasar AES memiliki
transformasi invers, yaitu: InvSubBytes, InvShiftRows dan InvMixColumns. AddRoundKey merupakan transformasi yang bersifat self-invers dengan syarat menggunakan kunci yang sama. [1] 17
Berikut merupakan contoh tahapan masing-masing proses saat proses dekripsi: 1.
PreRound Ciphertext: 39
02
dc
19
25
dc
11
6a
84
09
85
0b
1d
fb
97
32
Di XOR dengan AddRoundKey d0
c9
e1
b6
14
ee
3f
63
f9
25
0c
0c
a8
89
c8
a6
Dihasilkan:
2.
e9
cb
3d
af
31
32
2e
09
7d
2c
89
07
b5
72
5f
94
Round 1 a.
InvShiftRow Proses InvShiftRow ini merupakan kebalikan dari ShiftRow.
Gambar 2.5. Transformasi InvShiftRows [1]
18
Sehingga hasil dari PreRound di InvShiftRow menjadi:
b.
e9
cb
3d
af
09
31
32
2e
89
07
7d
2c
72
5f
94
b5
InvSubBytes Proses InvSubBytes sebenarnya sama dengan proses SubByte hanya saja tabel
yang digunakan yaitu tabel InvSubBytes seperti berikut: Tabel 2.3. Tabel Subtitusi untuk Transformasi InvSubBytes [1]
0 1 2 3 4 5 6 7 8 9 a b c d e f
0 52 7c 54 08 72 6c 90 d0 3a 96 47 fc 1f 60 a0 17
1 09 e3 7b 2e f8 70 d8 2c 91 ac f1 56 dd 51 e0 2b
2 6a 39 94 a1 f6 48 ab 1e 11 74 1a 3e a8 7f 3b 04
3 d5 82 32 66 64 50 00 8f 41 22 71 4b 33 a9 4d 7e
4 30 9b a6 28 86 fd 8c ca 4f e7 1d c6 88 19 ae ba
5 36 2f c2 d9 68 ed bc 3f 67 ad 29 d2 07 b5 2a 77
6 a5 ff 23 24 98 b9 d3 0f dc 35 c5 79 c7 4a f5 d6
7 38 87 3d b2 16 da 0a 02 ea 85 89 20 31 0d b0 26
8 bf 34 ee 76 d4 5e f7 c1 97 e2 6f 9a b1 2d c8 e1
9 40 8e 4c 5b a4 15 e4 af f2 f9 b7 db 12 e5 eb 69
a a3 43 95 a2 5c 46 58 bd cf 37 62 c0 10 7a bb 14
b 9e 44 0b 49 cc 57 05 03 ce e8 0e fe 59 9f 3c 63
c 81 c4 42 6d 5d a7 b8 01 f0 1c aa 78 27 93 83 55
d f3 de fa 8b 65 8d b3 13 b4 75 18 cd 80 c9 53 21
e d7 e9 c3 d1 b6 9d 45 8a e6 df be 5a ec 9c 99 0c
f fb cb 4e 25 92 84 06 6b 73 6e 1b f4 5f ef 61 7d
Jika hasil dari InvShiftRow disubtitusi dengan tabel di atas maka akan dihasilkan eb
59
8b
1b
40
2e
a1
c3
f2
38
13
42
1e
84
e7
d2
19
c.
AddRoundKey Dari hasil InvSubBytes kemudian di XOR dengan AddRoundKey ac
19
28
57
77
fa
d1
5c
66
dc
29
00
f3
21
41
6e
sehingga dihasilkan:
d.
47
40
a3
4c
37
d4
70
9f
94
e4
3a
42
ed
a5
a6
bc
InvMixColumns
[
] [
]
[
]
Untuk baris yang ke-1:
0e . 47 = Hex 0e = binary 00001110 (Di pola polynomial = x3+x2+x) Hex 47 = binary 01000111 (Di pola polynomial = x6+x2+x+1)
(x3+x2+x) (x6+x2+x+1)
x9+x5+x4+x3+x8+x4+x3+x2+x7+x3+x2+x
x9+x8+x7+x5+x3+x
x.x8+x8+x7+x5+x3+x
x(x4+x3+x+1)+(x4+x3+x+1)+x7+x5+x3+x
x5+x4+x2+x+x4+x3+x+1+x7+x5+x3+x
x7+x2+x+1 (binary: 10000111 hex: 87)
20
0b . 37 = Hex 0b = binary 00001011 (Di pola polynomial = x3+x+1) Hex 37 = binary 00110111 (Di pola polynomial = x5+x4+x2+x+1)
(x3+x+1)(x5+x4+x2+x+1)
x8+x7+x5+x4+x3+x6+x5+x3+x2+x+x5+x4+x2+x+1
x8+x7+x6+x5+1
x4+x3+x+1+x7+x6+x5+1
x7+x6+x5+x4+x3+x (binary: 11111010 hex: fa)
0d . 94 = Hex 0d = binary 00001101 (Di pola polynomial = x3+x2+1) Hex 94 = binary 10010100 (Di pola polynomial = x7+x4+x2)
(x3+x2+1)( x7+x4+x2)
x10+x7+x5+x9+x6+x4+x7+x4+x2
x10+x9+x6+x5+x2
x2 . x8 + x.x8 + x6+x5+x2
x2(x4+x3+x+1)+x(x4+x3+x+1)+x6+x5+x2
x6+x5+x3+x2+ x5+x4+x2+x+x6+x5+x2
x5+x4+x3+x2+x (binary 00111110 hex: 3e)
09 . ed = Hex 09 = binary 00001001 (Di pola polynomial = x3+1) Hex ed = binary 11101101 (Di pola polynomial = x7+x6+x5+x3+x2+1)
(x3+1)(x7+x6+x5+x3+x2+1)
x10+x9+x8+x6+x5+x3 + x7+x6+x5+x3+x2+1
x10+x9+x8+x7+x2+1
x2 . x8 + x.x8 + x8+x7+x2+1
x2(x4+x3+x+1)+x(x4+x3+x+1)+ x4+x3+x+1 +x7+x2+1
x6+x5+x3+x2+ x5+x4+x2+x + x4+x3+x+1 +x7+x2+1
x7+x6+x2 (binary 11000100 hex: c4) 21
Setelah itu masing-masing hasil di xor menjadi: 10000111 xor 11111010 xor 00111110 xor 11000100 = 10000111 (dalam hex: 87)
Untuk baris ke-2:
09 . 47 Hex 09 = binary 00001001 (Di pola polynomial = x3+1) Hex 47 = binary 01000111 (Di pola polynomial = x6+x2+x+1)
(x3+1)(x6+x2+x+1)
x9+x5+x4+x3+x6+x2+x+1
x9+x6+ x5+x4+x3+x2+x+1
x.x8+x6+ x5+x4+x3+x2+x+1
x(x4+x3+x+1)+x6+ x5+x4+x3+x2+x+1
x5+x4+x2+x+ x6+ x5+x4+x3+x2+x+1
x6+x3+1 (binary = 01001001 hex = 49)
0e . 37 Hex 0e = binary 00001110 (Di pola polynomial = x3+x2+x) Hex 37 = binary 00110111 (Di pola polynomial = x5+x4+x2+x+1)
(x3+x2+x)(x5+x4+x2+x+1)
x8+x7+x5+x4+x3+x7+x6+x4+x3+x2+ x6+x5+x3+x2+x
x8+x3+x
x4+x3+x+1+ x3+x
x4+1 (binary = 00010001 hex = 11)
0b . 94 Hex 0b = binary 00001011 (Di pola polynomial = x3+x+1) Hex 94 = binary 10010100 (Di pola polynomial = x7+x4+x2)
(x3+x+1)(x7+x4+x2)
x10+x7+x5+ x8+x5+x3+ x7+x4+x2 22
x10+x8+x4+x3+x2
x2 . x8 + x8+x4+x3+x2
x2(x4+x3+x+1)+ (x4+x3+x+1)+ x4+x3+x2
x6+x5+x3+x2+x+1+x2
x6+x5+x3+x+1 (binary = 01101011 hex: 6b)
0d . ed Hex 0d = binary 00001101 (Di pola polynomial = x3+x2+1) Hex ed = binary 11101101 (Di pola polynomial = x7+x6+x5+x3+x2+1)
(x3+x2+1)( x7+x6+x5+x3+x2+1)
x10+x9+x8+x6+x5+x3+ x9+x8+x7+x5+x4+x2+ x7+x6+x5+x3+x2+1
x10+x5+x4+1
x2 . x8 + x5+x4+1
x2(x4+x3+x+1) + x5+x4+1
x6+x5+x3+x2+x5+x4+1
x6+x4+x3+x2+1 (binary : 01011101 hex : 5d)
Setelah itu masing-masing hasil di xor menjadi: 01001001 xor 00010001 xor 01101011 xor 01011101 = 01101110 (dalam hex: 6e)
Untuk baris ke-3
0d . 47 Hex 0d = binary 00001101 (Di pola polynomial = x3+x2+1) Hex 47 = binary 01000111 (Di pola polynomial = x6+x2+x+1)
(x3+x2+1)( x6+x2+x+1)
x9+x5+x4+x3+ x8+x4+x3+x2+ x6+x2+x+1
x9+x8+x6+x5+x+1
x.x8+x8+ x6+x5+x+1
x(x4+x3+x+1)+ x4+x3+x+1+ x6+x5+x+1 23
x5+x4+x2+x+ x4+x3+x+1+ x6+x5+x+1
x6+x3+x2+x (binary: 01001110 hex: 4e)
09 . 37 Hex 09 = binary 00001001 (Di pola polynomial = x3+1) Hex 37 = binary 00110111 (Di pola polynomial = x5+x4+x2+x+1)
(x3+1)( x5+x4+x2+x+1)
x8+x7+x5+x4+x3+ x5+x4+x2+x+1
x8+x7+x3+x2+x+1
x4+x3+x+1+x7+x3+x2+x+1
x7+ x4+ x2 (binary: 10010100 hex: 94)
0e . 94 Hex 0e = binary 00001110 (Di pola polynomial = x3+x2+x) Hex 94 = binary 10010100 (Di pola polynomial = x7+x4+x2)
(x3+x2+x)( x7+x4+x2)
x10+x7+x5+ x9+x6+x4+ x8+x5+x3
x10+x9+ x8+ x7+x6+x4 +x3
x2 . x8 + x.x8 + x8+ x7+x6+x4 +x3
x2(x4+x3+x+1)+x(x4+x3+x+1)+( x4+x3+x+1)+ x7+x6+x4 +x3
x6+x5+x3+x2+ x5+x4+x2+x+ x4+x3+x+1+ x7+x6+x4 +x3
x7+x4 +x3+1 (binary: 10011001 hex: 99)
0b . ed Hex 0b = binary 00001011 (Di pola polynomial = x3+x+1) Hex ed = binary 11101101 (Di pola polynomial = x7+x6+x5+x3+x2+1)
(x3+x+1)( x7+x6+x5+x3+x2+1)
x10+x9+x8+x6+x5+x3+x8+x7+x6+x4+x3+x+x7+x6+x5+x3+x2+1
x10+x9+x4+x3+x+x6+x2+1
x2.x8+x.x8+x6+x4+x3+x2+x+1 24
x2(x4+x3+x+1)+x(x4+x3+x+1)+ x6+x4+x3+x2+x+1
x6+x5+x3+x2+ x5+x4+x2+x+ x6+x4+x3+x2+x+1
x2+1 (binary: 00000101 hex: 05)
Setelah itu masing-masing hasil di xor menjadi: 01001110 xor 10010100 xor 10011001 xor 00000101 = 01000110 (dalam hex: 46)
Untuk baris ke-4
0b . 47 Hex 0b = binary 00001011 (Di pola polynomial = x3+x+1) Hex 47 = binary 01000111 (Di pola polynomial = x6+x2+x+1)
(x3+x+1)(x6+x2+x+1)
x9+x5+x4+x3+ x7+x3+x2+x+ x6+x2+x+1
x9+x7+x6+x5+x4+1
x.x8+x7+x6+x5+x4+1
x(x4+x3+x+1)+ x7+x6+x5+x4+1
x5+x4+x2+x+ x7+x6+x5+x4+1
x7+x6+x2+x+1 (binary: 11000111 hex: c7)
0d . 37 Hex 0d = binary 00001101 (Di pola polynomial = x3+x2+1) Hex 37 = binary 00110111 (Di pola polynomial = x5+x4+x2+x+1)
(x3+x2+1)( x5+x4+x2+x+1)
x8+x7+x5+x4+x3+ x7+x6+x4+x3+x2+ x5+x4+x2+x+1
x8+x6+x4+x+1
(x4+x3+x+1)+x6+x4+x+1
x6+x3 (binary: 01001000 hex: 48)
25
09 . 94 Hex 09 = binary 00001001 (Di pola polynomial = x3+1) Hex 94 = binary 10010100 (Di pola polynomial = x7+x4+x2)
(x3+1)(x7+x4+x2)
x10+x7+x5+x7+x4+x2
x2.x8+x5+x4+x2
x2(x4+x3+x+1)+ x5+x4+x2
x6+x5+x3+x2+x5+x4+x2
x6+x4+x3 (binary: 01011000 hex: 58)
0e . ed Hex 0e = binary 00001110 (Di pola polynomial = x3+x2+x) Hex ed = binary 11101101 (Di pola polynomial = x7+x6+x5+x3+x2+1)
(x3+x2+x)(x7+x6+x5+x3+x2+1)
x10+x9+x8+x6+x5+x3+ x9+x8+x7+x5+x4+x2+ x8+x7+x6+x4+x3+x
x10+x8+x2+x
x2.x8+x8+x2+x
x2.(x4+x3+x+1)+ (x4+x3+x+1)+ x2+x
x6+x5+x3+x2+x4+x3+x+1+ x2+x
x6+x5+x4+1 (binary: 01110001 hex: 71)
Setelah itu masing-masing hasil di xor menjadi: 11000111 xor 01001000 xor 01011000 xor 01110001 = 10100110 (dalam hex: a6)
[
] [
]
[
]
[
] [
]
[
]
26
[
] [
]
[
]
Sehingga data setelah hasil AddRoundKey di InvMixColumns menjadi: 87
f2
4d
97
6e
4c
90
ec
46
e7
4a
c3
a6
8c
d8
95
27