bit-bit berikutnya sampai dengan panjang bit 448 diisi oleh bit “0”. Jumlah total bit isian yang ditambahkan adalah 448
bit. Sebagai contoh misalkan suatu pesan dengan panjang dalam bit
616 bit dinotasikan sebagai K. setelah dibagi ke dalam blok 512 bit, menjadi blok1=512 bit dan blok2=104 bit. Blok terakhir blok2 ditambah
dengan bit-bit isian dengan ketentuan message padding, tambahkan “1”
pada bit terakhir blok2 dan tambahkan beberapa bit “0” sedemikian sehingga total panjang bit blok2 setelah proses message padding adalah
448 bit.
2.6.2 Penambahan Panjang Bit
Setelah proses message padding, jumalah bit pada blok terakhir adalah 448 bit. Representasikan K ke dalam bilangan biner untuk memproleh 64
bit terakhir, agar total panjang blok terakhir 512 bit. a.
Pada MD5 urutan byte paling kanan dari representasi K dijadikan high order
urutan paling kiri. b.
Tambahkan representasi K tersebut pada 448 bit terakhir, sehingga jumlah panjang blok terakhir adalah 512 bit.
Pada contoh di atas, K=616 bit dan direpresentasikan ke dalam bilangan biner 16 bit adalah:
00000010 01101000
Nilai ini dijadikan 64 bit sehingga hasilnya: 00000010
00000000 00000000 00000000 00000000
00000000 00000010 01101000 Karena urutannya bit paling kanan dijadikan high order, maka susunan 64
bit terakhir adalah: 01101000
00000000 00000000 00000000 00000000
00000000 00000010 00000010 Tambahkan representasi K ini pada blok terakhir, sehingga panjang
totalnya 512 bit.
Universitas Sumatera Utara
2.6.3 Inisialisasi Buffer
Sebelum proses perhitungan, perlu disisipkan suatu nilai awal atau disebut juga inisialisasi vektor IV, yaitu buffer A, B, C, D dengan panjang
masing-masing 32 bit. Nilainya dalam notasi heksadesimal adalah: A: 67452301
B: EFCDAB89 C: 98BADCFE
D: 10325476 Selain digunakan untuk menyimpan nilai awal buffer tersebut juga
akan digunakan untuk penyimpanan nilai sementara hasil perhitungan MD5.
2.6.4 Memproses 16 subblok 32 bit
Bagian ini merupakan inti dari proses algoritma MD5, yang terdiri dari 4 round,
masing-masing roundnya mempunyai 16 operasi. Untuk memproses setiap satu blok pesan 512 bit diperlukan 64 operasi.
Gambar 2.6. Struktur proses satu langkah operasi algoritma MD5
Universitas Sumatera Utara
a. Untuk setiap round, didefinisikan sebagai berikut:
FB, C, D = B AND C OR NOTB AND D GB, C, D = B AND D OR C AND NOTD
HB, C, D = B XOR C XOR D IB, C, D = C XOR B OR NOT D
b.
Diperlukan tabel berdimensi satu yang terdiri dari 64 elemen
T[1…64]. Tabel tersebut dihasilkan berdasar fungsi sinus. Notasi t[i] menunjukkan elemen ke-
I dari tabel T[1…64] yang akan dipergunakan sebagai konstanta 4294967296 = 2
32
menunjukkan kemungkinan banyaknya kombinasi bit untuk masing-masing
buffer 32 bit. T[i] = 4294967296 x abssini, I dalam satuan radian atau T[i] = 4294967296 x
abssin ix180π, π=3.14159265358979323846264338327950288.
c. Blok 512 bit yang akan dinotasikan M
1,
M
2, …,
M
n
diproses. Untuk memproses M
i
digunakan langkah-langkah sebagai berikut: i.
Bagi M
i
ke dalam 16 subblok 32 bit yaitu X[k], 0≤k≤15. Pada setiap subblok, urutan byte paling kanan dijadikan high order
diikuti oleh byte selanjutnya sampai dengan byte paling kiri dijadikan low order.
ii. Simpan nilai A, B, C, D ke AA, BB, CC, DD sebagai
inisialisasi awal. Selanjutnya, buffer A, B, C, D digunakan untuk penyimpanan nilai sementara yaitu: AA = A, BB = B,
CC = C, DD = D. iii.
Lakukan proses untuk setiap blok M
i
yang terdiri dari 4 round, yang masing-masing roundnnya terdiri dari 16 operasi, sebagai
berikut: Notasi [abcd k s i] menunjukkan operasi a=b+a+F
1
B, C, D+X[k]+T[i]s. ABCD adalah buffer 32-bit, X[k]
Universitas Sumatera Utara
merupakan notasi dari 16 subblok 32 bit, T[i] adalah konstanta tambahan dan s merupakan operasi pergeseran bit ke kiri
sebanyak s bit.
Round 1. Notasi [abcd k s i] menunjukkan operasi a= b + a + Fb,c,d +
X[k] + T[i] s. Lakukan 16 operasi berikut.
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16]
Round 2. Notasi [abcd k s i] menunjukkan operasi a= b + a + Gb,c,d +
X[k] + T[i] s.
[ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24]
[ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32]
Round 3. Notasi [abcd k s i] menunjukkan operasi a= b + a + Hb,c,d +
X[k] + T[i] s.
[ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40]
[ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48]
Round 4. Notasi [abcd k s i] menunjukkan operasi a= b + a + Ib,c,d +
X[k] + T[i] s.
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]
[ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64]
Universitas Sumatera Utara
d. Untuk penyelesaian akhir, tambahkan nilai A, B, C, D dengan
inisialisasi awal atau nilai hash sebelumnya. A=A+AA, B=B+BB, C=C+CC, D=D+DD.
Secara umum, satu langkah operasi pada MD5, didefinisikan dengan mengoperasikan fungsi terhadap 3 buffer B, C, D. Hasilnya
ditambahkan dengan dengan X [k], T[i] dan kemudian mengalami pergeseran sebanyak s bit.
2.6.5 Output