Penambahan Panjang Bit Inisialisasi Buffer Memproses 16 subblok 32 bit

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