Anda di halaman 1dari 101

PERBANDINGAN ALGORITMA MESSAGE DIGEST 5 (MD5) DAN

SHA256 PADA HASHING FILE DOKUMEN

SKRIPSI

ARDI BETESDA CLINTA GINTING


121401102

PROGRAM STUDI S1 ILMU KOMPUTER


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2017

Universitas Sumatera Utara


ii

PERBANDINGAN ALGORITMA MESSAGE DIGEST 5 (MD5) DAN SHA256 PADA


HASHING FILE DOKUMEN
SKRIPSI

Diajukan untuk melengkapi tugas akhir dan memenuhi syarat mencapai gelar Sarjana
Komputer

ARDI BETESDA CLINTA GINTING


121401102

PROGRAM STUDI S1 ILMU KOMPUTER


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2017

Universitas Sumatera Utara


iii

PERSETUJUAN

Judul : PERBANDINGAN ALGORITMA MESSAGE DIGEST 5


(MD5) DAN SHA256 PADA HASHING FILE
DOKUMEN
Kategori : SKRIPSI
Nama : ARDI BETESDA CLINTA GINTING
Nomor Induk Mahasiswa : 121401102
Program Studi : S1 ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA

Diluluskan di
Medan, Oktober 2017

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Jos Timanta Tarigan, S.Si, M.Kom Dian Rachmawati, S.Si, M.Kom


NIP. 19850126 201504 1 001 NIP. 19830723 200912 2 004

Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer
Ketua,

Dr. Poltak Sihombing, M.Kom


NIP. 19620317 199103 1 001

Universitas Sumatera Utara


iv

PERNYATAAN

PERBANDINGAN ALGORITMA MESSAGE DIGGEST 5 (MD5) DAN SHA256 PADA


HASHING FILE DOKUMEN

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan
dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, Oktober 2017

Ardi Betesda Clinta Ginting


121401102

Universitas Sumatera Utara


v

PENGHARGAAN

Segala pujian dan syukur hanya bagi Tuhan Yesus Kristus yang telah memberkati dan
memelihara kehidupan ini dan karena kasi setia dan anugerah-Nya prnulis dapat
menyelesaikan penulisan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana
Komputer, pada Program Studi s1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi
Informasi Universitas Sumatera Utara.

Pada pengerjaan skripsi ini yang berjudul “Perbandingan Algoritma Message Digest
(MD5) dan SHA256 pada Hashing File Dokumen” penulis menyadari bahwa banyak pihak
yang turut membantu, baik keluarga, sahabat, dan pihak-pihak lain yang memotivasi dalam
pengerjaannya. Dalam kesempatan ini, penulis mengucapkan terima kasih kepada:

1. Bapak Prof. Dr. Runtung, S.H., M.Hum. selaku Rektor Universitas umatera Utara.
2. Bapak Prof. Dr. Opim Sitompul, M.Sc. selaku Dekan Fakultas Ilmu Komputer
dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom. selaku Ketua Program Studi S1 Ilmu
Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas
Sumatera Utara dan juga selaku Dosen Pembanding I yang telah banyak
memberikan arahan dan masukan yang sangat berharga kepada penulis
4. Bapak Almarhum Prof. Iryanto, M.Si. selaku Dosen Pembimbing I yang telah
memberikan arahan, kritik dan saran serta motivasi kepada penulis dalam
pengerjaan skripsi ini.
5. Ibu Dian Rachmawati, S.Si., M.Kom. juga selaku Dosen Pembimbing I yang telah
memberikan arahan, kritik dan saran serta motivasi kepada penulis dalam
pengerjaan skripsi ini.
6. Bapak Jos Timanta Tarigan, S.Si, M.Kom. selaku Dosen Pembimbing II yang
mau membimbing penulis dalam penyelesaian pengerjaan skripsi ini.
7. Bapak Drs. Dahlan Sitompul, M. Eng. selaku Dosen Pembanding II yang telah
banyak memberikan arahan dan masukan yang sangat berharga kepada penulis.

Universitas Sumatera Utara


vi

8. Ayah saya Akim Ginting, Ibu saya Inget Kami br Kaban, dan juga kedua adik
saya Aries Rezky Clinta Ginting dan Erlikasna Ginting yang selalu berdoa,
mendukung, memberi kasih sayang yang begitu berarti bagi penulis.
9. Seluruh tenaga pengajar dan pegawai di Fakultas Ilmu Komputer dan Teknologi
Informasi USU.
10. Teman-teman kuliah yang tidak dapat penulis sebutkan satu-persatu, yang telah
banyak membantu dalam pengerjaan skripsi ini hingga selesai.
11. Semua pihak yang terlibat langsung maupun tidak langsung yang tidak dapat
penulis ucapkan satu demi satu yang telah membantu penyelesaian laporan ini.

Kiranya Tuhan selalu melimpahkan berkat kepada semua pihak yang telah
memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi
ini.

Medan, Oktober 2017

Penulis,

Ardi Betesda Clinta Ginting

Universitas Sumatera Utara


vii

ABSTRAK

Dokumen adalah kumpulan data yang tertulis atau tercetak yang berisi informasi. Semakin
majunya teknologi, Integritas dari suatu dokumen harus dijaga. Karna sifat dokumen yang terbuka
artinya isi dokumen dapat dibaca dan diubah oleh banyak pihak, sehingga integritas isi informasi
dari dokumen tidak terjaga. Untuk menjaga integritas data dari suatu dokumen, diciptakan suatu
mekanisme yang disebut digital signature atau sering juga nilai hash, yaitu kode khusus yang
dihasilkan dari fungsi penghasil digital signature. Salah satu algoritma yang digunakan untuk
menghasilkan digital signature adalah fungsi hash. Ada banyak fungsi hash. Dua diantaranya
message digest 5 (MD5) dan SHA256. Kedua algoritma ini tentunya mempunyai kelebihan dan
kekurangan masing-masing. Maka dilakukan penelitian untuk menentukan Algoritma mana yang
lebih baik dilihat dari kecepatan running time dan kompleksitas. Dari hasil penelitian
didapatkanlah bahwa kompleksitas dari Algoritma MD5 dan SHA256 adalah sama yaitu Ɵ(N),
namun dalam hal kecepatan running time didapatkan bahwa MD5 lebih baik dibandingkan dengan
SHA256.

Kata Kunci : Kriptografi, Fungsi Hash, Message Digest-5, SHA256, Dokumen.

Universitas Sumatera Utara


viii

COMPARISON OF MESSAGE DIGEST 5(MD5) AND SHA256 IN HASHING


DOCUMENT FILE

ABSTRACT

Document is a collection of written or printed data that containing information. Because


technology has been more advanced, so the integrity of a document must be maintained. Because
the document can be opened easily and the contents of the document can be read and changed
easily by many parties, so the integrity of the information content of the document is not
maintained. To maintain the data integrity of a document, there is a mechanism called digital
signature or frequent hash value. Hash value is generated specifically from the digital signature
generating function. One of the algorithms to generate digital signatures is the hash function. There
are many hash functions. Two of them are message digest 5 (MD5) and SHA256. Both of these
algorithms have advantages and disadvantages of each. So it was researched to decide which
algorithm is better, where the parameter is speed of running time and complexity. From the
research we know that complexity of MD5 algorithm and SHA256 equal that is Ɵ(N), but the
running time of MD5 is better than SHA256.

Key Words : Cryptography, Hash function, Message Digest-5, SHA256, Document.

Universitas Sumatera Utara


ix

DAFTAR ISI

Hal.
Persetujuan iii
Pernyataan iv
Penghargaan v
Abstrak vii
Abstract viii
Daftar Isi ix
Daftar Tabel xi
Daftar Gambar xii
Daftar Lampiran xiii

Bab 1 Pendahuluan 1
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 3

Bab 2 Tinjauan Pustaka 5


2.1 Kriptografi 5
2.2 Fungsi Hash (Hash Function) 6
2.3 Teori Matematika 8
2.3.1 Logika Matematika dan Operator Logika 8
2.3.2 Konversi Sistem Bilangan 10
2.4 Message Digest 5 12
2.5 SHA256 22
2.6 Teori Kompleksitas Algoritma 32
2.7 Penelitian yang Relevan 35

Bab 3 Analisis dan Perancangan Sistem 36


3.1 Analisis Sistem 36
3.1.1 Analisis Masalah 36
3.1.2 Analisis Kebutuhan 37
3.1.3 Analisis Proses 39
3.2 Pemodelan 39
3.2.1 Use Case Diagram 39
3.2.2 Activity Diagram 43

Universitas Sumatera Utara


x

3.2.3 Sequence Diagram 44


3.2.3.1 Sequence Diagram pada Proses Hash 45
3.2.2 Flowchart Sistem 46
3.3 Perancangan Antarmuka Sistem (Interface) 46
3.3.1 Halaman Menu Home 47
3.3.2 Halaman Menu Hash 48
3.3.3 Halaman Menu About 49
Bab 4 Implementasi dan Pengujian Sistem 51
4.1 Implementasi 51
4.1.1 Tampilan Halaman Home 51
4.1.2 Tampilan Halaman Hash 52
4.1.3 Tampilan Halaman About me dan Latar Belakang 53
4.2 Pengujian Sistem 53
4.2.1 Pengujian Metode Message Digest 5 54
4.2.1.1 Pengujian Pertama pada Algoritma 54
Message Digest 5 (MD5)
4.2.1.2 Pengujian Kedua pada Algoritma 55
Message Digest 5 (MD5)
4.2.1.3 Pengujian Ketiga pada Algoritma 56
Message Digest 5 (MD5)
4.2.1.4 Grafik Running Time Rata-rata pada Algoritma 57
Message Digest(MD5)
4.2.2 Pengujian Algoritma SHA256 58
4.2.2.1 Pengujian Pertama pada Algoritma 59
SHA256
4.2.2.2 Pengujian Kedua pada Algoritma 60
SHA256
4.2.2.3 Pengujian Ketiga pada Algoritma 61
SHA256
4.2.2.4 Grafik Running Time Rata-rata pada Algoritma 62
SHA256
4.2.3 Perbandingan Running Time Rata-Rata MD5 dengan 62
SHA256
4.3 Kompleksitas Algoritma 63
4.3.1 Kompleksitas Algoritma Message Digest 5 (MD5) 63
4.3.2 Kompleksitas SHA256 65
Bab 5 Kesimpulan dan Saran 68
5.1 Kesimpulan 68
5.2 Saran 68

Universitas Sumatera Utara


xi

DAFTAR TABEL

Hal.
Tabel 2.1 Tabel kebenaran  9
Tabel 2.2 Tabel kebenaran  9
Tabel 2.3 Tabel kebenaran  10
Tabel 2.4 Tabel kebenaran  10
Tabel 2.5 Tabel T 15
Tabel 2.6 Fungsi-fungsi dasar MD5 18
Tabel 2.7 Rincian Operasi pada Fungsi F(b, c, d) 18
Tabel 2.8 Rincian Operasi pada Fungsi G(b, c, d) 19
Tabel 2.9 Rincian Operasi pada Fungsi H(b, c, d) 19
Tabel 2.10 Rincian Operasi pada Fungsi I(b, c, d) 20
Tabel 2.11 Tabel konstanta dalam SHA 256 27
Tabel 3.1 Spesifikasi Use Case Hash 40
Tabel 3.2 Spesifikasi Use Case Reset 40
Tabel 3.3 Spesifikasi Use Case Buka File Dokumen 41
Tabel 3.4 Spesifikasi Use Case Hashing File dengan Algoritma MD5 41
Tabel 3.5 Spesifikasi Use Case Hashing File dengan Algoritma SHA256 42
Tabel 3.6 Spesifikasi Use Case Menampilkan Nilai Hash dan Running Time 43
Tabel 3.7 Keterangan Gambar Rancangan Tampilan Menu Home 47
Tabel 3.8 Keterangan Gambar Rancangan Tampilan Menu Hash 48
Tabel 3.9 Keterangan Gambar Rancangan Tampilan Menu About 49
Tabel 4.1 Kompleksitas Algoritma Message Digest 5 (MD5) 63
Tabel 4.2 Kompleksitas Algoritma SHA256 65

Universitas Sumatera Utara


xii

DAFTAR GAMBAR

Hal.
Gambar 2.1 Enkripsi dan Dekripsi 5
Gambar 2.2 Fungsi Hash Satu Arah(Schneier, 1996) 8
Gambar 2.3 Satu Operasi MD5 (Rosyanti Harahap, 2010) 13
Gambar 2.4 Pembuatan hash value dengan algoritma MD5 (Munir, 2006) 14
Gambar 2.5 Pengolahan blok 512 bit (Proses HMD5) 16
Gambar 2.6 Operasi Dasar MD5 17
Gambar 2.7 Tahap Preprocessing pada SHA256 23
Gambar 2.8 Tahap Hash Computation pada SHA256 25
Gambar 2.9 Grafik Notasi Ɵ 34
Gambar 3.1 Diagram Ishikawa 37
Gambar 3.2 Use Case Diagram 39
Gambar 3.3 Activity Diagram proses Hash 44
Gambar 3.4 Sequence Diagram pada Proses Hash 45
Gambar 3.5 Flowchart Sistem 46
Gambar 3.6 Rancangan Tampilan Menu Home 47
Gambar 3.7 Rancangan Tampilan Menu Hash 48
Gambar 3.8 Rancangan Tampilan Menu About me dan Latar Belakang 49
Gambar 4.1 Tampilan Halaman Home 52
Gambar 4.2 Tampilan Halaman Hash 52
Gambar 4.3 Tampilan Halaman About 53
Gambar 4.4 Hasil Pengujian Sample 1 dengan Algoritma MD5 55
Gambar 4.5 Hasil Pengujian Sample 2 dengan Algoritma MD5 56
Gambar 4.6 Hasil Pengujian Sample 3 dengan Algoritma MD5 57
Gambar 4.7 Grafik Running Time Rata-rata pada Pengujian Pertama, Kedua, dan Ketiga dengan 58
MD5
Gambar 4.8 Hasil Pengujian Sample 1 dengan Algoritma SHA256 59
Gambar 4.9 Hasil Pengujian Sample 2 dengan Algoritma SHA256 60
Gambar 4.10 Hasil Pengujian Sample 3 dengan Algoritma SHA256 61
Gambar 4.11 Grafik Running Time Rata-rata pada Pengujian Pertama, Kedua, dan Ketiga dengan 62
SHA256
Gambar 4.12 Grafik Running Time Rata-rata pada MD5 dan SHA256 63

Universitas Sumatera Utara


xiii

DAFTAR LAMPIRAN

Hal.
Lampiran 1 Listing Program A1
Lampiran 2 Daftar Riwayat Hidup B1

Universitas Sumatera Utara


1

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Dokumen adalah kumpulan data yang tertulis atau tercetak yang berisi informasi.
Semakin majunya teknologi, Integritas dari suatu dokumen harus dijaga. Karna sifat
dokumen yang terbuka artinya isi dokumen dapat dibaca dan diubah oleh banyak
pihak, sehingga inteegritas isi informasi dari dokumen tidak terjaga. Untuk menjaga
integritas data dari suatu dokumen, diciptakan suatu mekanisme yang disebut digital
signature atau sering juga nilai hash, yaitu kode khusus yang dihasilkan dari fungsi
penghasil digital signature. Salah satu algoritma yang digunakan untuk menghasilkan
digital signature adalah fungsi hash.

Fungsi hash atau one-way hashing algorithm adalah fungsi satu arah yang
berfungsi dalam pengecekan keaslian atau integritas suatu pesan. Fungsi hash dapat
menerima masukan yang panjangnya bernilai random dan mengubahnya menjadi nilai
hash yang berukuran tetap(fixed). Fungsi hash bekerja dengan mengubah pesan
menjadi message digest atau pesan singkat yang terlihat acak dan tidak akan dapat
dikembalikan menjadi pesan semula. Nilai hash yang dihasilkan tidak akan memiliki
nilai yang sama pada pesan yang berbeda. Ada banyak algoritma hash yang telah
ditemukan antara lain : Snefru, SHA-0, SHA-1, SHA-256, SHA-384, SHA-3,
RipeMD, Whirpool, MD2, MD4, MD5, MD6, Haval dan lain-lain. Semua algoritma
hash tersebut memiliki kelebihan dan kelemahan masing-masing.

Message Digest 5 (MD5) merupakan algoritma hash satu arah yang diciptakan
oleh Ron Rivest. MD5 merupakan hasil pengembangan dari MD4. Algoritma MD5
menerima masukan berupa pesan yang memiliki panjang sembarangan namun

Universitas Sumatera Utara


2

menghasilkan keluaran berupa hash value atau message digest yang mempunyai
panjang 128 bit. Secara garis besar algoritma MD5 terdiri dari beberapa langkah yang
dimulai dari penambahan bit-bit pengganjal yang sering disebut padding bits.
Kemudian mengerjakan proses penambahan nilai panjang pesan semula. Tahap ketiga
adalah melakukan inisialisasi penyangga (buffer) Message Digest. Terakhir
melakukan Pengolahan pesan dalam blok berukuran 512 bit. Proses dikerjakan hingga
mendapat hash value yang memiliki panjang 128 bit.

Ada banyak fungsi SHA, salah satu diantaranya adalah SHA-256. SHA-256
dibuat oleh NIST (The National Institute of Standard and Technology) pada tahun
2000. Masukan untuk SHA-256 adalah pesan yang memiliki panjang sembarang
dengan maksimal panjangnya 264 bit. Keluaran dari SHA-256 adalah hash value yang
memiliki panjang tetap sebesar 256 bit. Ada dua tahap penting dalam operasi SHA-
256 yaitu preprocessing dan hash computation. Preprocessing terdiri dari tiga langkah
yang dimulai dari padding pesan, parsing pesan, kemudian melakukan proses set
initial hash value. Setelah preprocessing selesai, lakukan proses hash computation.
Proses ini terdiri dari empat langkah yang dimulai dari proses mempersiapkan message
schedule, lalu initialize variable, kemudian melakukan komputasi sesuai dengan
fungsi SHA-256, yang terakhir menjumlahkan variabel yang sudah dikomputasi
dengan initial hash value. Dari proses inilah hash value akan didapatkan.

Kedua algoritma ini tentunya mempunyai kekurangan dan kelebihan masing-


masing. Dari variasi pemrosesan dan nilai hash yang dihasilkan, maka kedua algoritma
ini dapat dibandingkan mana yang lebih baik dalam memproses pesan atau dokumen
dalam jumlah data yang sama.

1.2 Rumusan Masalah

Berdasarkan latar belakang tersebut, penulis akan meneliti algoritma mana yang lebih
baik dalam hashing file dokumen (*.doc atau *.docx), dimana parameternya antara
lain: waktu hashing (satuan ms) yang dibutuhkan untuk masing-masing algoritma dan
Algoritma mana yang memiliki kompleksitas (bigӨ) yang lebih baik diantara
algoritma Message Digest 5 dengan SHA-256.

Universitas Sumatera Utara


3

1.3 Batasan Masalah

1. Jenis file yang di hashing adalah file document microsoft office word (*.doc atau
*.docx).
2. Parameter perbandingan adalah waktu hashing(satuan ms) dan kompleksitas (big
Ө) dari kedua algoritma.
3. Menggunakan bahasa pemrograman C#.
4. Menggunakan Komputer dengan processor 2,40 GHz, RAM 8 GB, Sistem Operasi
Windows 10 64 bit.

1.4 Tujuan Penelitian

Tujuan penelitian ini adalah untuk mengetahui algoritma fungsi hash mana yang lebih
baik antara Message Digest 5 dengan SHA-256, dengan membandingkan kecepatan
hashing file.doc atau .docx menggunakan algoritma Message Digest 5 dan SHA-256
dan mengetahui perbandingan kompleksitas (big Ө) algoritma Message Digest 5 dan
SHA-256.

1.5 Manfaat Penelitian

Manfaat penelitian ini adalah pembaca dapat memahami cara kerja algoritma MD5
dan SHA256 serta mengimplementasikan algoritma yang lebih efisien dan efektif.

1.6 Metodologi Penelitian

Penelitian ini menerapkan beberapa metode penelitian sebagai berikut:

1. Studi Literatur
Pada tahap ini dilakukan pengumpulan referensi atau literatur yang diperlukan
dalam penelitian. Hal ini dilakukan untuk memperoleh informasi dan data
yang diperlukan untuk penulisan skripsi ini. Referensi atau literatur yang

Universitas Sumatera Utara


4

digunakan dapat berupa buku, jurnal, artikel, maupun situs internet yang berkaitan
dengan Kriptografi, hash function, algoritma MD5, dan SHA-256.

2. Pengumpulan dan Analisis Data


Pada tahap ini dilakukan pengumpulan dan analisis data yang berhubungan
dengan penelitian ini, seperti fungsi algoritma MD5 dan SHA-256 bisa
diimplementasikan dalam program, agar penulis dapat mengetahui efektifitas dan
efisiensi algoritma.

3. Perancangan Sistem
Merancang sistem sesuai dengan rencana yang telah ditentukan, yaitu meliputi
perancangan interface awal seperti button maupun table untuk menampilkan data
hasil fungsi algorima MD5 dan SHA-256. Proses perancangan ini berdasarkan
pada batasan masalah dari penelitian ini.

4. Implementasi Sistem
Pada tahap ini pembuatan sistem telah selesai dilaksanakan dan menambahkan
data hasil algoritma MD5 dan SHA-256 ke dalam sistem.

5. Pengujian Sistem
Pada tahap ini akan dilakukan pengujian terhadap sistem yang telah
dikembangkan.

6. Dokumentasi Sistem
Melakukan pembuatan dokumentasi sistem mulai dari tahap awal hingga
pengujian sistem, untuk selanjutnya dibuat dalam bentuk laporan penelitian
(skripsi).

Universitas Sumatera Utara


5

BAB 2

TINJAUAN PUSTAKA

2.1 Kriptografi
Kriptografi adalah ilmu mengenai teknik enkripsi dimana pesan diacak menggunakan
suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang tidak
memiliki kunci dekripsi.(Sentot Kromodimoeljo, 2010).

Pesan atau data yang dapat dimengerti maknanya dinamakan plaintext atau
cleartext. Plaintext dapat berupa deretan bit, berkas teks, rekaman suara, gambar,
video, dan data lainnya yang berbentuk digital. Proses menyembunyikan informasi asli
di dalam pesan dinamakan enkripsi. Pesan yang dienkripsi dinamakan ciphertext.
Proses pengembalian pesan ciphertext kembali ke plaintext atau cleartext dinamakan
dekripsi. Itu sebabnya kriptografi dapat juga diartikan seni dan ilmu pengetahuan
dalam menjaga keamanan pesan (Schneier, 1996).

Plaintext Ciphertext Plaintext


Enkripsi Dekripsi

Gambar 2.1 Enkripsi dan Dekripsi

Pada gambar 2.1 dapat dilihat bahwa enkripsi merupakan proses mengubah
plaintext menjadi ciphertext dan dekripsi merupakan proses mengubah ciphertext
menjadi plaintext.

Plaintext dilambangkan dengan M atau P. Ciphertext dilambangkan dengan C.


Fungsi Enkripsi dilambangkan dengan E, yang mengubah M menjadi C. Dalam notasi
matematika dapat ditulis sebagai berikut:

E(M)=C

Universitas Sumatera Utara


6

Fungsi Dekripsi megubah ciphertext, C kembali kepada pesan plaintext, M.


Dalam notasi matematika dapat ditulis sebagai berikut:

D(C)=M

Orang yang mengaplikasikan kriptografi adalah Kriptografer. Kriptanalisis


adalah seni dan ilmu pengetahuan dalam mendapatkan informasi sejati dari ciphertext
sebelum dienkripis.Orang yang melakukan Kriptanalisis adalah Kriptanalis.
Kriptologi adalah studi mengenai kriptografi dan kriptanalisis.

Untuk membuktikan kerahasiaannya, kriptografi juga mempunyai fungsi yang lain


antara lain:

1. Authentication(Otentikasi). Memungkinkan penerima utama dapat melihat isi


informasi asli dari pesan yang sudah diamankan dengan kriptografi, pihak
lain tidak dapat mengambil peran dari penerima utama pesan tersebut.
2. Integrity(Integritas). Memungkinkan penerima utama dapat membuktikan
bahwa pesannya tidak diubah pada waktu proses transportasi data. Sehingga
membuat pekerjaan pihak lain yang mengganti isi pesan dengan informasi
palsu menjadi sia-sia.
3. Nonrepudiation(tidak dapat ditolak). Pengirim tidak dapat menyangkali
bahwa dia telah mengirim pesan.
Kriptografi modern saat ini menggunakan kunci sebagai kekuatannya dalam
proses enkripsi maupun dekripsi. Kunci yang digunakan bisa saja berupa deretan
karakter atau bilangan bulat. Dengan menggunakan kunci K maka fungsi enkripsi dan
dekripsi dapat dituliskan dalam notasi matematika sebagai berikut:

EK(M)=C

DK(C)=M

2.2 Fungsi Hash (Hash Function)


Fungsi hash satu arah merupakan prosedur terdefenisi atau fungsi matematika yang
mengubah variabel dari suatu data yang berukuran besar menjadi lebih
sederhana(Yovie dan M Husni, 2015). Fungsi hash satu arah berfungsi

Universitas Sumatera Utara


7

mengoperasikan data dengan panjang bersifat random dan mengubahnya menjadi nilai
hash yang berukuran tetap (fixed). Jika ditulis dalam notasi matematika misalkan
panjang pesan semula yang sifatnya sembarang dilambangkan H(M), dan panjang nilai
hash yang bersifat tetap dilambangkan dengan h maka:

h=H(M)

Panjang nilai h biasanya tidak terlalu besar antara 128 hingga 512 bit. Keluaran
fungsi hash adalah pesan singkat yang terlihat acak yang disebut juga hash value(nilai
hash) atau message digest(pesan ringkas) ataupun fingerprint(sidik jari). Kriteria yang
sudah menjadi standart untuk kemanan algoritma fungsi hash antara lain:

1. Preimage resistance. Untuk suatu nilai hash yang sembarang(tidak diketahui asal-
usulnya), sangat sukar bahkan tidak mungkin untuk mencari pesan yang
mempunyai nilai hash tersebut, itu sebabnya fungsi hash dikatakan fungsi hash
satu arah.
2. Collision resistance. Sangat sukar untuk menemukan nilai hash yang sama
diantara dua pesan yang berbeda.
Algoritma fungsi hash biasanya membagi pesan sehingga terdiri dari beberapa
blok, setiap blok biasanya 512 atau 1024 bit. Pesan diberi padding meskipun besarnya
merupakan kelipatan dari besarnya blok dan padding diakhiri dengan size dari pesan.
Algoritma hash biasanya terdiri dari dua tahap yaitu Preprocessing dan Hashing.

Tahap Preprocessing biasanya terdiri dari padding dan parameter setup. Tahap
hashing membuat nilai hash dengan melakukan proses komputasi terhadap naskah
yang sudah diberi padding sesuai dengan algoritma hash yang ada. Proses komputasi
dilakukan dengan setiap blok secara berurut diproses dan hasilnya dijadikan feedback
untuk proses blok berikutnya.

Sifat-sifat fungsi hash satu arah adalah sebagai berikut(Munir,2006):

1. Fungsi H dapat diterapkan pada blok data berukuran berapa saja.


2. H menghasilkan nilai(h) dengan panjang tetap(fixed-length output).
3. H(x) mudah dihitung untuk setiap nilai x yang diberikan.

Universitas Sumatera Utara


8

4. Untuk setiap h yang dihasilkan tidak mungkin dikembalikan nilai x sedemikian


sehinggai H(x)=h.
5. Untuk setiap x yang diberikan, tidak mungkin mencari y ≠ x sedemikian sehingga
H(y) = H(x).
6. Tidak mungkin mencari pasangan x dan y sedemikian sehingga H(x)=H(y).
Tidak mudah untuk mengubah masukan yang panjangnya sembarangan
menghasilkan keluaran nilai hash yang mempunyai panjang yang tetap. Fungsi hash
satu arah dibangun dengan fungsi kompresi, dimana masukannya adalah blok pesan
dan keluaran dari blok teks atau nilai hash sebelumnya. Dalam notasi matematika
dapat dituliskan sebagai berikut:

h=H(M)

(a) (b)
Gambar 2.2 Fungsi Hash Satu Arah(Schneier, 1996)
Pada Gambar 2.2, dapat diketahu fungsi hash secara sederhana. Pada gambar
2.2(a) dapat dilihat bahwa M merupakan pesan yang akan diproses dengan fungsi hash
dimana fungsinya adalah h=H(M) dan h adalah hash value yang dihasilkan. Gambar
2.2(b) merupakan penyederhanaan gambar 2.2(a), fungsi satu arah secara sederhana
mengubah plaintext menjadi hash value.

2.3 Teori Matematika

2.3.1 Logika Matematika dan Operator Logika


Logika berasal dari kata Bahasa Yunani “logos”. Logika dapat diartikan sebagai ilmu
pengetahuan yang mempelajari atau berkaitan dengan prinsip-prinsip dari penalaran
argument yang valid. Logika adalah ilmu tentang penalanaran(reasoning)(F.Soesianto
dan Djoni, 2006). Dahulu logika dipelajari sebagai salah satu cabang filosofi atau ilmu
filsafat. Akan tetapi, sejak tahun 1800-an logika dipelajari di bidang matematika dan
sekarang ini juga di bidang perangkat keras maupun perangkat lunak. Logika di sini
disebut logika symbol (symbloc logic) karena ia mempelajari usaha-usaha
menyimbolisasikan logika secara formal.

Universitas Sumatera Utara


9

Logika matematika berisi pernyataan-pernyataan dimana pernyataan tersebut


dapat tunggal atau gabungan. Pernyataan mempunyai sifat dasar yaitu bernilai benar
(biasanya disimbolkan dengan “1”) atau bernilai salah (biasanya disimbolkan dengan
“0”), namun tidak mungkin memiliki nilai keduanya. Kebenaran dan kesalahan dari
pernyataan-pernyataan yang ada dinamakan nilai kebenaran dari pernyataan tersebut.
Operator logika adalah operator yang digunakan untuk membandigkan dua pernyatan
yang benilai 0 atau 1. Setiap operator logika mempunyai tabel kebenaran masing-
masing. Tabel kebenaran adalah tabel yang menunjukkan secara sistematis satu demi
satu nilai-nilai kebenaran sebagai hasil kombinasi dari pernyataan-pernyataan yang
sederhana. Berikut operator logika yang digunakan dalam algoritma MD5 dan juga
SHA256 yang disertai dengan tabel kebenarannya.

Konjungsi(conjunction) adalah kata lain dari perangkai “dan (and)”, dan


konjungsi mempunyai tabel kebenaran sebagai berikut:

Tabel 2.1 Tabel kebenaran 


A B AB
0 0 0
0 1 0
1 0 0
1 1 1

Tabel 2.1 merupakan tabel kebenaran dari konjungsi. Dari tabel kebenaran dari
konjungsi diatas, hanya ada satu nilai 1 jika pasangan tersebut keduanya bernilai 1,
lainnya pasti 0.

Disjungsi (disjunction) menggunakan symbol  yang digunakan untuk


perangkai “atau (or)”. Disjungsi mempunyai tabel kebenaran sebagai berikut:

Tabel 2.2 Tabel kebenaran 


A B AB
0 0 0
0 1 1
1 0 1
1 1 1
Tabel 2.2 merupakan tabel kebenaran dari disjungsi. Dari Tabel kebenaran
diatas, nilai A  B bernilai 0 jika nilai A dan B keduanya 0, lainnya pasti 1.

Universitas Sumatera Utara


10

Negasi (negation) digunakan untuk menggantikan perangkat “tidak (not)” dan


tabel kebenarannya sebagai berikut:

Tabel 2.3 Tabel kebenaran 


A A A
0 0 0
1 0 1
Tabel 2.3 merupakan tabel kebenaran dari negasi. Dari Tabel kebenaran diatas,
negasi berarti hanya kebalikan dari nilai variabel yang dinegasikan. Jika 0 akan
menjadi 1 begitu juga sebaliknya.
Perangkai ”xor” (exclusive or) mempunyai tabel kebenaran dari A xor B
sebagai berikut:

Tabel 2.4 Tabel kebenaran 


A B AB
0 0 0
0 1 1
1 0 1
1 1 0
Tabel 2.3 merupakan tabel kebenaran dari xor. Dari tabel diatas dapat dilihat
bahwa A xor B bernilai 1 jika A dan B bernilai berbeda, jika keduanya sama pasti
salah.

2.3.2 Konversi Sistem Bilangan


Sistem bilangan(number system) adalah suatu cara untuk mewakili besaran dari suatu
item phisik( Djogiyanto, 1999). Sistem bilangan yang banyak dipergunakan oleh
manusia adalah sistem bilangan decimal, yaitu sistem bilangan yang menggunakan 10
macam symbol untuk mewakili suatu besaran. Namun dalam algoritma MD5 dan
SHA256 sistem bilangan yang digunakan bukan hanya decimal tapi juga sistem
bilangan biner(binary system number) dan juga sistem bilangan
hexadecimal(hexadecimal number system). Masing-masing sistem bilangan
menggunakan suatu bilangan dasar atau basis (base atau disebut juga radix) yang
tertentu. Basis yang dipergunakan masing-masing sistem bilangan tergantung dari
jumlah nilai bilangan yang dipergunakan, yaitu sebagai berikut:

Universitas Sumatera Utara


11

 Sistem bilangan desimal dengan basis 10 (deca berarti 10), menggunakan 10


macam simbol bilangan.
 Sistem bilangan biner dengan basis 2 (binary berarti 2), menggunakan 2
macam simbol bilangan.
 Sistem bilangan hexadesimal dengan basis 16 (hexa berarti 6 dan deca berarti
10), menggunakan 16 macam simbol bilangan.

Maka dibutuhkan pemahaman konversi bilangan dalam mengubah sistem bilangan


tertentu ke sistem bilangan yang lain. Berikut cara konversi bilangan ke bilangan yang
lain.

Pertama konversi bilangan decimal ke bilangan biner. Caranya dengan


menjumlahkan bilangan-bilangan pangkat dua yang jumlahnya sama dengan bilangan
decimal yang dikonversikan. Misalnya, bilangan desimal 15 akan dikonversikan ke
bilangan biner, dapat dilakukan dengan cara berikut:
20 = 1  1
21 = 2  100
22 = 4  1000
23 = 8  10000
---+ --------+
15 11101

Kemudian konversi dari bilangan desimal ke bilangan hexadecimal. Caranya


dengan menggunakan remainder method. Metode ini disebut metode sisa, yaitu
membagikan bilangan desimal dengan basis dari bilangan hexadesimal, yaitu 16, maka
bilangan desimal dapat dikonversikan ke bilangan hexadecimal.
1583 : 16 = 98 Sisa 15 = F
98 : 16 = 6 Sisa 2 = 2
62F
Maka 158310 = 62F16

Selanjutnya konversi dari bilangan biner ke bilangan desimal dengan cara


mengalikan masing-masing bit dalam bilangan dengan position value-nya.
101101 = 1 x 25 + 0 x 24 + 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20
= 1 x 32 + 0 x 16 + 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1
= 32 + 0+ 8 + 4 + 0 + 1
= 45

Universitas Sumatera Utara


12

Berikutnya konversi dari bilangan biner ke bilangan hexadesimal dapat


dilakukan dengan mengkonversi tiap-tiap empat digit biner. Misalnya bilangan biner
11010100 dapat dikonversikan ke hexadesimal dengan cara :
1101 0100
 
D 4
Hubungan antara 1 digit hexadesimal dengan 4 digit biner dapat dilihat sebagai
berikut:
0  0000 4  0100 8  1000 C  1100
1  0001 5  0101 9  1001 D  1101
2  0010 6  0110 A  1010 E  1110
3  0011 7  0111 B  1011 F  1111
Berikutnya konversi bilangan hexadesimal ke bilangan desimal dengan cara
mengalikan masing-masing digit bilangan dengan position value-nya.
BGA16 = 11 x 162 + 6 x 161 + 10 x 160
= 11 x 256 + 6 x 16 + 10 x 1
= 2816 + 96 + 10
= 292210

Terakhir konversi bilangan hexadesimal ke bilangan biner, konversi ini dapat


dilakukan dengan mengkonversikan masing-masing digit hexadesimal ke 4 digit biner
sebagai berikut:
D 4
 
1101 0100
Berarti bilangan hexadesimal D4 adalah 11010100 dalam bilangan biner.

2.4 Message Digest 5


Algoritna Message Digest 5 atau MD5 merupakan algoritma yang dirancang oleh Ron
Rivest dimana algoritma ini dipublikasi pada tahun 1992. Masukan dari MD5 adalah
pesan yang memiliki panjang data sembarang, namun MD5 menghasilkan keluaran
berupa hash value atau message digest yang memiliki panjang data tetap yaitu 128 bit
(Ron Rivest, 1992). Dapat diperkirakan untuk mengerjakan algoritma ini
membutuhkan perhitungan yang tidak mudah, dimana banyak pesan diproses hingga
menghasilkan hash value yang spesifik untuk tiap pesannya. Algoritma MD5 didesain
untuk mesin 32-bit. Algoritma MD5 merupakan pengembangan dari Algoritma MD4.

Universitas Sumatera Utara


13

Algoritma MD5 mungkin sedikit lebih lambat dari MD4 dan memiliki desain yang
lebih komprehensif, namun MD5 memiliki tingkat keamanan yang jauh lebih baik
dibanding MD4. MD5 merupakan salah satu algoritma hash function yang paling
popular. Algoritma ini pada dasarnya dirancang untuk tujuan keamanan yang tinggi di
mana pesan yang besar harus “kompresi” dengan cara yang aman sebelum
ditandatangani dengan kunci pribadi (Rusdianto dan Akhmad, 2016).

Hal yang paling awal dikerjakan sebelum melakukan proses MD5 adalah
mengubah data menjadi data bit. Setelah proses awal ini selesai, maka MD5
memproses data menjadi blok-blok data yang terdiri dari 512 bit blok, dan 512 bit ini
dibagi ke dalam 16 sub-blok yang terdiri dari 32 bit. Hasil proses dari blok-blok ini
akan menghasilkan hash value 128 bit.

Gambar 2.3 Satu Operasi MD5 (Rosyanti Harahap, 2010)

Pada gambar 2.3 merupakan satu operasi MD5 yang terdiri atas 64 operasi,
dikelompokkan dalam empat putaran dari 16 operasi. F adalah fungsi nonlinear yang
digunakan pada tiap-tiap putaran. Mi menunjukkan blok 32 bit dari masukan pesan,
dan Ki menunjukkan konstanta 32 bit, berbeda untuk tiap-tiap operasi.

Universitas Sumatera Utara


14

Notasi <<<s merupakan operasi circular left atau pergeseran kiri bit oleh s, s
bervariasi untuk tiap-tiap operasi. Proses pada gambar 2.4 menunjukkan tambahan
modulo 232.

Gambar 2.4 Pembuatan hash value dengan algoritma MD5 (Munir, 2006)

Pada Gambar 2.4 diatas menunjukkan langkah-langkah pembuatan hash value


secara garis besar dimulai dari penambahan bit-bit pengganjal (padding bits),
kemudian penambahan nilai panjang pesan semula, setelah itu melakukan proses
inisialisasi penyangga (buffer) MD, langkah terakhir melakukan pengolahan pesan
dalam blok berukuran 512 bit. Langkah-langkah tersebut dirincikan sebagai berikut.

Langkah pertama dalam MD5 adalah melakukan penambahan bit-bit


pengganjal atau padding, tujuannya agar panjang data mencapai 448 modulo 512, atau
64 bit kurang dari kelipatan 512 bit. Padding terdiri dari sebuah bit 1 dengan sisanya
bit 0. Proses padding ini menyisakan 64 bit untuk diisi agar besar data menjadi
kelipatan 512. 64 bit yang tersisa ini akan diisi dengan panjang bit yang berisi besar
naskah asli dalam bit. Proses ini akan dikerjakan pada langkah berikutnya.

Langkah kedua, adalah proses penambahan 64 bit nilai yang menyatakan


panjang pesan semula. Jika panjang pesan lebih besar dari 264 maka yang diambil
adalah panjangnya dengan modulo 264. Dengan kata lain, jika panjang pesan semula
adalah K bit, maka 64 bit yang ditambahkan menyatakan K modulo 264, proses ini

Universitas Sumatera Utara


15

dapat dinamakan low-order word. Setelah ditambah dengan 64 bit, panjang pesan
menjadi 512 bit.

Langkah ketiga, melakukan proses inisialisasi penyangga (buffer) message


digest. Empat kata buffer yang didefinisikan dengan A, B, C, D digunakan dalam
melakukan komputasi message digest. Setiap dari A, B, C, D merupakan sebuah data
register yang terdiri dari 32 bit. Total panjang penyangga adalah 128 bit. Register-
register ini diinisialisasikan sebagai berikut:

A : 01 23 45 67
B : 89 AB CD EF
C : FE DC BA 98
D : 76 54 32 10

Kemudian mengerjakan langkah terakhir namun sebelum mengerjakan tahap


terakhir ada tabel yang harus diketahui yaitu tabel 2.5 yand disebut dengan tabel T.
Tabel 2.5 Tabel T
T[1] = D76AA478 T[17] = F61E2562 T[33] = FFFA3942 T[49] = F4292244
T[2] = E8C7B756 T[18] = C040B340 T[34] = 8771F681 T[50] = 432AFF97
T[3] = 242070DB T[19] = 265E5A51 T[35] = 69D96122 T[51] = AB9423A7
T[4] = C1BDCEEE T[20] = E9B6C7AA T[36] = FDE5380C T[52] = FC93A039
T[5] = F57C0FAF T[21] = D62F105D T[37] = A4BEEA44 T[53] = 655B59C3
T[6] = 4787C62A T[22] = 02441453 T[38] = 4BDECFA9 T[54] = 8F0CCC92
T[7] = A8304613 T[23] = D8A1E681 T[39] = F6BB4B60 T[55] = FFEFF47D
T[8] = FD469501 T[24] = E7D3FBCB T[40] = BEBFBC70 T[56] = 85845DD1
T[9] = 698098D8 T[25] = 21E1CDE6 T[41] = 289B7EC6 T[57] = 6FA87E4F
T[10] = 8B44F7AF T[26] = C33707D6 T[42] = EAA127FA T[58] = FE2CE6E0
T[11] = FFFF5BB1 T[27] = F4D50D87 T[43] = D4EF3085 T[59] = A3014314
T[12] = 895CD7BE T[28] = 455A14ED T[44] = 04881D05 T[60] = 4E0811A1
T[13] = 6B901122 T[29] = A9E3E905 T[45] = D9D4D039 T[61] = F7537E82
T[14] = FD987193 T[30] = FCEFA3F8 T[46] = E6DB99E5 T[62] = BD3AF235
T[15] = A679438E T[31] = 676F02D9 T[47] = 1FA27CF8 T[63] = 2AD7D2BB
T[16] = 49B40821 T[32] = 8D2A4C8A T[48] = C4AC5665 T[64] = EB86D391
Tabel T di atas digunakan dalam proses pengerjaan putaran-putaran algoritma MD5.

Langkah terakhir melakukan pengolahan pesan dalam blok berukuran 512 bit.
Di langkah ini proses algoritma utama dikerjakan. Pada proses ini menggunakan iterasi
sampai terbentuk blok-blok. Blok-blok ini dibagi menjadi L buah blok dimana panjang
masing-masing blok merupakan 512 bit (Y0 sampai YL-1). Setiap blok 512 bit diproses
dengan penyangga message digest menjadi keluaran 128 bit, dan ini disebut proses
HMD5.

Universitas Sumatera Utara


16

Gambar 2.5 Pengolahan blok 512 bit (Proses HMD5)

Pada gambar 2.5 diatas menunjukkan proses pengolahan blok 512 bit terdiri
dari 4 putaran, dimana masing-masing putarannya melakukan operasi dasar algoritma
MD5 sebanyak 16 kali setiap operasi dasar dan setiap operasi memakai elemen T yang
nilainya telah ditetap sesuai dengan tabel T pada tabel 2.5. Jadi setiap putaran memakai
16 elemen tabel T. Yq menyatakan blok 512 bit ke-q dari pesan yang telah ditambah
bit-bit pengganjal dan tambahan 64 bit nilai panjang semula. MDq adalah nilai message
digest 128 bit dari proses HMD5 ke-q. Pada awal proses, MDq berisi nilai inisialisasi

Universitas Sumatera Utara


17

penyangga MD. Fungsi fF, fG, fH, dan fI masing-masing berisi 16 kali operasi dasar
terhadap masukan, setiap operasi dasar menggunakan elemen Tabel T. Operasi dasar
MD5 diperlihatkan pada gambar berikut.

Gambar 2.6 Operasi Dasar MD5


Pada Gambar 2.6 di atas dapat dituliskan dengan persamaan sebagai berikut:

a  b + CLSs(a + g(b, c, d)+ X[k] + T[i]) (1)

Dengan keterangan :
a, b, c, d = empat buah penyangga 32- bit(berisi nilai penyangga A, B,
aaC, D)
g = salah satu fungsi F, G, H, I
CLSs = circular left shift sebanyak s bit
X[k] = kelompok 32 bit ke-k dari blok 512 bit message ke-q dimana
= Nilai k = 0 sampai 15

Universitas Sumatera Utara


18

T[i] = elemen Tabel T ke-i (32 bit)


+ = operasi penjumlahan modulo 232

Fungsi fF, fG, fH, dan fI merupakan fungsi-fungsi untuk memanipulasi masukan
a, b, c, dan d dengan ukuran 32 bit. Masing-masing fungsi dapat dilihat pada tabel
2.26berikut.
Tabel 2.6 Fungsi-fungsi dasar MD5
Nama Notasi G(b, c, d)
fF F(b,c,d) (b  c)  (b  c)
fG G(b,c,d) (b  d)  (c  d)
fH H(b,c,d) bcd
fI I(b,c,d) c  (b  d)

Pada tabel 2.6 menunjukkan fungsi fF, fG, fH, dan fI yang terdiri atas operasi-
operasi logika. Operator logika AND, OR, NOT, XOR masing-masing dilambangkan
dengan , , , . Dari persamaan yang terlihat pada tabel 2.6 dapat dilihat bahwa
masing-masing fungsi fF, fG, fH, dan fI melakukan operasi dasar.
Misalkan notasi

[abcd k s i]

Menyatakan operasi

a ← b + ((a + g(b, c, d) + X[k] + T[i])<<<s)

yang dalam hal ini <<<s melambangkan operasi circular left shift 32-bit, maka masing-
masing putaran dapat ditabulasikan sebagai berikut:

Putaran 1: 16 kali operasi dasar dengan g(b, c, d) = F(b, c, d) dapat dilihat pada Tabel
2.7

Tabel 2.7 Rincian Operasi pada Fungsi F(b, c, d)


No. [abcd K s i]
1 [ABCD 0 7 1]
2 [DABC 1 12 2]
3 [CDAB 2 17 3]
4 [BCDA 3 22 4]
5 [ABCD 4 7 5]

Universitas Sumatera Utara


19

6 [DABC 5 12 6]
7 [CDAB 6 17 7]
8 [BCDA 7 22 8]
9 [ABCD 8 7 9]
10 [DABC 9 12 10]
11 [CDAB 10 17 11]
12 [BCDA 11 22 12]
13 [ABCD 12 7 13]
14 [DABC 13 12 14]
15 [CDAB 14 17 15]
16 [BCDA 15 22 16]

Putaran 2: 16 kali operasi dasar dengan g(b, c, d) = G(b, c, d) dapat dilihat pada Tabel
2.8

Tabel 2.8. Rincian Operasi pada Fungsi G(b, c, d)


No. [abcd K S i]
1 [ABCD 1 5 17]
2 [DABC 6 9 18]
3 [CDAB 11 14 19]
4 [BCDA 0 20 20]
5 [ABCD 5 5 21]
6 [DABC 10 9 22]
7 [CDAB 15 14 23]
8 [BCDA 4 20 24]
9 [ABCD 9 5 25]
10 [DABC 14 9 26]
11 [CDAB 3 14 27]
12 [BCDA 8 20 28]
13 [ABCD 13 5 29]
14 [DABC 2 9 30]
15 [CDAB 7 14 31]
16 [BCDA 12 20 32]

Putaran 3: 16 kali operasi dasar dengan g(b, c, d) = H(b, c, d) dapat dilihat pada Tabel
2.9

Tabel 2.9 Rincian Operasi pada Fungsi H(b, c, d)


No. [abcd k s i]
1 [ABCD 5 4 33]
2 [DABC 8 11 34]
3 [CDAB 11 16 35]
4 [BCDA 14 23 36]
5 [ABCD 1 4 37]

Universitas Sumatera Utara


20

6 [DABC 4 11 38]
7 [CDAB 7 16 39]
8 [BCDA 10 23 40]
9 [ABCD 13 4 41]
10 [DABC 0 11 42]
11 [CDAB 3 16 43]
12 [BCDA 6 23 44]
13 [ABCD 9 4 45]
14 [DABC 12 11 46]
15 [CDAB 15 16 47]
16 [BCDA 2 23 48]

Putaran 4: 16 kali operasi dasar dengan g(b, c, d) = I(b, c, d) dapat dilihat pada Tabel
2.10

Tabel 2.10 Rincian Operasi pada Fungsi I(b, c, d)


No. [abcd k s i]
1 [ABCD 0 6 49]
2 [DABC 7 10 50]
3 [CDAB 14 15 51]
4 [BCDA 5 21 52]
5 [ABCD 12 6 53]
6 [DABC 3 10 54]
7 [CDAB 10 15 55]
8 [BCDA 1 21 56]
9 [ABCD 8 6 57]
10 [DABC 15 10 58]
11 [CDAB 6 15 59]
12 [BCDA 13 21 60]
13 [ABCD 4 6 61]
14 [DABC 11 10 62]
15 [CDAB 2 15 63]
16 [BCDA 9 21 64]

Setelah putaran keempat, a, b, c, dan d ditambahkan ke A, B, C, dan D, dan selanjutnya


algoritma memproses untuk blok data berikutnya (Yq+1). Keluaran akhir dari algoritma
MD5 adalah hasil penyambungan bit-bit di A, B, C dan D.

Dari uraian di atas, fungsi hash MD5 dapat ditulis dalam persamaan matematis
berikut:

MD0 = IV

MDq+1 = MDq + f1(Yq + fH(Yq + fG(YQ +fF(YQ + MDq ))))

Universitas Sumatera Utara


21

MD0 = MDL-1

Dengan keterangan :
IV = initial vector dari penyangga ABCD, yang dilakukan pada proses
inisialisasi penyangga.
Yq = blok pesan berukuran 512 bit ke-q
L = jumlah blok pesan
MD = nilai akhir message digest

Contoh, Misalkan file a.docx berisi teks sebagai berikut:

Ardi Betesda Clinta Ginting

Misalkan dokumen diatas memiliki ukuran 11379 bytes yang bila dikonversi ke satuan
bit akan menjadi 91032 bits. Proses yang algoritma MD5 hingga menghasilkan hash
value atau message digest, adalah sebagai berikut:

Pertama, penambahan bit-bit pengganjal sehingga panjang dokumen kongruen dengan


448 modulo 512, 91032 dimodulokan 512 adalah 408 sehingga perlu ditambah sebuah
bit 1 didepan dan 39 buah bit 0 mengikutinya. Lalu tambahkan nilai panjang dokumen
semula dengan 40 bit pengganjal dan 64 bit panjang pesan asli sehingga 0...
10110001110011000 sekarang dokumen berukuran 91136 bit. Setelah itu pesan dibagi
menjadi L buah blok yang masing-masing panjangnya 512 bit, 91136/512 = 178 blok.
Kemudian setiap blok 512 bit tersebut diproses bersama dengan penyangga MD
menjadi keluaran 128 bit, disebut proses HMD5. Pada proses HMD5, 512 bit ke-q dari
dokumen tersebut melakukan putaran sebanyak 4 kali dimana masing-masing putaran
melakukan operasi dasar dengan persamaan a ← b + CLSs(a + g(b, c, d) + X[k] + T[i])
sebanyak 16 kali dan setiap operasi dasar memakai sebuah elemen T. MDq –dalah nilai
message digest 128 bit dari proses HMD5 ke-q yang mana pada awal proses MDq berisi
nilai inisialisasi penyangga MD dengan A = 01234567, B = 89ABCDEF, C =
FEDCBA98 dan D = 76543210. MDq adalah gabungan dari A, B, C dan D misalkan
didapatkan A = A823C7DD, B = 4526AADC, C = FFE301D9 dan D = 08DF67BA
maka selanjutnya diproses pada blok data berikutnya (Yq+1) menggantikan inisialisasi
penyangga MD. Setelah melalui proses pada blok terakhir, didapatlah nilai dari A, B,

Universitas Sumatera Utara


22

C dan D lalu bit-bit keempatnya disambung menjadi 128 bit message digest contohnya
seperti berikut.

1110 1101 0111 1011 0101 0000 1000 0101 1111 1101 1000
0110 1110 1111 0101 0001 1100 1000 0111 1001 0100 1011
0000 1011 1101 1111 0011 1011 0111 0000 0011 1000

Bila dikonversi ke notasi HEX akan menjadi sebagai berikut:

ED7B5085FD86EF51C8794B0BDF3B7038

2.5 SHA256
Algoritma hash satu arah dimana tidak mungkin menemukan pesan semula dari
message digest yang dihasilkan. Salah satu algoritma yang lain adalah SHA256.
SHA256 dirancang oleh The National Institute of Standars and Technology (NIST)
pada tahun 2002(Yusmantoro et all, 2014). SHA256 menerima masukan data dengan
panjang maksimum 264 bit dan menghasilkan keluaran berupa message digest atau
hash value dengan panjang 256 bit. SHA256 menggunakan beberapa fungsi logika
antara lain operasi AND, OR, XOR, SHIFT(right), dan ROTATE(right)(Abdurrisyad
F, 2011). Fungsi logika tersebut digunakan untuk mengoperasikan blok-blok terdiri
dari 32 bit.

SHA256 mempunyai operasi yang hampir sama dengan MD5. Pesan yang akan
di-hash, pertama diberi bit-bit pengganjal agar bit-bit memiliki total panjang 512 bit,
lalu bit-bit tesebut diuraikan menjadi blok-blok bit dimana setiap bloknya terdiri dari
512 bit. Blok-blok tersebut dinotasikan sebagai berikut M(1), M(2), …, M(N). Blok-blok
bit tersebut diproses dalam satu waktu. SHA256 menggunakan persamaan matematika
untuk mendapatkan hash value. Adapun persamaan tersebut adalah:

H(i)= H(i+1) + 𝐶𝑀(𝑖) (H(i-1))

Dengan keterangan:
C = fungsi kompresi dari SHA256
+ = operasi penjumlahan modulo 232
H = hash dari M

Universitas Sumatera Utara


23

Fungsi dari SHA256 mengoperasikan 512 bit blok dan sebuah blok yang terdiri
dari 256 bit intermediate hash value. Intermediate hash value adalah blok yang terdiri
dari 256 bit yang dienkripsi menggunakan blok pesan sebagai kunci. Karena itu ada
dua komponen utama yang harus dideskripsikan yaitu fungsi kompresi SHA256 dan
message schedule dari SHA256.

SHA256 mempunyai dua fungsi utama yaitu preprocessing dan hash


computation. Preprocessing terdiri dari padding pesan, parsing pesan, set initial hash
value. Hash computation terdiri dari persiapan message schedule, initialize variable,
komputasi SHA256, menjumlahkan variabel. Dari proses akan didapatkan keluaran
berupa hash value yang panjangnya 256 bit.

Preprocessing
Pesan(M) dengan
panjang
Padding Pesan
sembarang

Convert to binary Parsing Pesan

Set initial hash


value

Gambar 2.7 Tahap Preprocessing pada SHA256

Seperti pada gambar 2.7 diatas hal yang dilakukan dalam preprocessing adalah
padding. Padding pesan dengan menambahkan bit-bit pengganjal sehingga total
panjangnya 512 bit. Padding dilakukan dengan cara menambahkan bit 1 dan sisanya
adalah bit 0 sejumlah k. banyaknya tambahan bit pengganjal dapat dilihat dengan
formula sebagai berikut:

l + 1 + k  448 mod 512 (2)

Universitas Sumatera Utara


24

Dengan keterangan sebagai berikut:


l = Panjang pesan
k = Banyak bit 0 yang ditambahkan sebagai pengganjal

Diakhir pesan yang dipadding tambahkan jumlah pesan yang telah dikonversi
ke bit. Itulah akhir dari proses padding pesan. Proses berikutnya adalah melakukan
parsing pesan.

Parsing pesan merupakan proses membentuk blok-blok pesan. Pesan yang di


telah padding akan dikelompokkan ke dalam blok-blok pesan yang masing-masing
memiliki 512 bit. Blok-blok pesan ini dikelompokkan ke dalam M(0), M(1), …, M(n-1).
Kemudian masing-masing blok 512 bit dibagi ke dalam 16 blok pesan yang masing-
masing bloknya terdiri dari 32 bit, blok-blok pesan ini dinotasikan sebagai berikut,
M0(i), M1(i), …, M15(i). Proses parsing pesan selesai maka proses berikutnya adalah
proses set initial hash value.

Sebelum memasuki proses berikutnya ada enam fungsi logika yang digunakan
dalam SHA 256. Enam fungsi tersebut antara lain:

Ch(x, y, z)=(xy)  (xz)

Maj(x, y, z)=(xy)  (xz)  (yz)

0(x)=ROTR2(x)  ROTR 13(x)  ROTR 22(x)

1(x)= ROTR 6(x)  ROTR 11(x)  ROTR 25(x)

0(x)= ROTR 7(x)  ROTR 18(x)  SHR3(x)

0(x)=ROTR17(x)  ROTR19(x)  SHR10(x)

Universitas Sumatera Utara


25

Hash Computation

Untuk setiap blok


pesan M0, M1, …, Mn-1

Persiapkan
message schedule

Initialize variable
a,b, …, h
Preprocessing Gabungkan H0 – H7

Untuk t=0…63;
lakukan komputasi
sesuai fungsi
SHA256

Jumlahkan variabel
a,b, …,h yang sudah
dikomputasi dengan
initial hash value

Gambar 2.8 Tahap Hash Computation pada SHA256

Gambar 2.8 diperlihatkan proses setelah preprocessing adalah melakukan


proses hash computation, tahap pertama pada proses ini melakukan proses persiapan
message schedule, pada persiapan message schedule mempunyai formula yang harus
diketahui yaitu sebagai berikut:

(𝑡)
𝑀𝑡
𝑊𝑡 = ൝ (256)
0≤t≤15
1 (𝑊𝑖−2 ) + 𝑊𝑖−7 + 0(256) (𝑊𝑖−15 ) + 𝑊𝑖−16
16≤t≤63

Universitas Sumatera Utara


26

Dengan keterangan:

Wt = blok pesan yang baru

Mt = blok pesan yang lama.


(256)
1 (𝑊𝑖−2 ) = ((𝑊𝑖−2 ) ROTR 17)  ((𝑊𝑖−2 ) ROTR 19)  ((𝑊𝑖−2 ) SHR 10)
(256)
0 (𝑊𝑖−15 ) =((𝑊𝑖−15 ) ROTR 7)((𝑊𝑖−15 ) ROTR 18)  ((𝑊𝑖−15 ) SHR 3)

Wi-2 = blok pesan dari W ke i-2

Wi-15 = blok pesan dari W ke i-15

ROTR = Rotate Right

SHR = Shift Right

 = fungsi XOR

Formula diatas berfungsi untuk mengkonversi setiap M0(i), M1(i), …, M15(i)


kedalam blok heksadesimal.

Kemudian Mengerjakan tahap Inisial hash value pada H(0) nilainya sudah
ditetapkan yaitu kumpulan bilangan heksadesimal dimana jika dikonversikan akan
menghasilkan 32 bit, dimana inisial hash value tersebut adalah sebagai berikut:

(0)
a = 𝐻0 =6A09E667

(0)
b = 𝐻1 =BB67AE85

(0)
c = 𝐻2 =3C6EF372

(0)
d = 𝐻3 =A54FF53A

(0)
e = 𝐻4 =510E527F

(0)
f = 𝐻5 =9B056887

(0)
g = 𝐻6 =1F83D9AB

Universitas Sumatera Utara


27

(0)
h = 𝐻7 =5BE0CD19

Berikutnya melakukan proses komputasi untuk t=0 sampai t=63 sesuai dengan
fungsi SHA256. Dimana fungsi SHA256 adalah sebagai berikut:

For t=0 to 63:


{
T1 = h + ∑(256)
1 (𝑒)+Ch(e,f,g)+𝐾1(256) + Wt
T2 = ∑(256) 0 (𝑎)+Maj(a,b,c)
H = G
G = F
F = E
E = d + T1
D = C
C = B
B = A
A = T1+ T2
}

Dengan keterangan:
a, b, c, d, e. f, g, h = variabel yang berisi blok-blok pesan heksadesimal
(𝟐𝟓𝟔)
𝑲𝟏 = Konstanta SHA256
∑(𝟐𝟓𝟔)
𝟏 (𝒆) ` = (e ROTR 6)  (e ROTR 11)  (e ROTR 25)
(𝟐𝟓𝟔)
∑𝟎 (𝒂) = (e ROTR 2)  (e ROTR 13)  (e ROTR 22)
Ch(e,f,g) = (e  f)  (e  g)
Maj(a,b,c) = (a  b)  (a  c)  (b  c)
ROTR = Rotate Right
 = fungsi XOR
 = fungsi AND

Tabel 2.11 Tabel konstanta dalam SHA 256


428A2F98 71374491 B5C0FBCF E9B5DBA5 3956C25B 59F111F1 923F82A4 AB1C5ED5

D807AA98 12835B01 243185BE 550C7DC3 72BE5D74 80DEB1FE 9BDC06A7 C19BF174

E49B69C1 EFBE4786 0FC19DC6 240CA1CC 2DE92C6F 4A7484AA 5CB0A9DC 76F988DA

983E5152 A831C66D B00327C8 BF597FC7 C6E00BF3 D5A79147 06CA6351 14292967

27B70A85 2E1B2138 4D2C6DFC 53380D13 650A7354 766A0ABB 81C2C92E 92722C85

A2BFE8A1 A81A664B C24B8B70 C76C51A3 D192E819 D6990624 F40E3585 106AA070

19A4C116 1E376C08 2748774C 34B0BCB5 391C0CB3 4ED8AA4A 5B9CCA4F 682E6FF3

748F82EE 78A5636F 84C87814 8CC70208 90BEFFFA A4506CEB BEF9A3F7 C67178F2

Universitas Sumatera Utara


28

Pada tabel 2.11 diperlihatkan konstanta yang akan digunakan dalam


(256) (256) (256)
perhitungan fungsi SHA256 untuk 𝐾0 , 𝐾1 , …,𝐾63

Setelah proses komputasi selesai, maka tahap berikutnya adalah menjumlahkan


variabel a, b, c, d, e, f , g, h yang sudah dikomputasi dengan initial hash value.

(0) (𝑖−1)
𝐻0 = a + 𝐻0

(0) (𝑖−1)
𝐻1 = b + 𝐻1

(0) (𝑖−1)
𝐻2 = c + 𝐻2

(0) (𝑖−1)
𝐻3 = d + 𝐻3

(0) (𝑖−1)
𝐻4 = e + 𝐻4

(0) (𝑖−1)
𝐻5 = f + 𝐻5

(0) (𝑖−1)
𝐻6 = g + 𝐻6

(0) (𝑖−1)
𝐻7 = h + 𝐻7

Terakhir Gabungkan H0 – H7, dari penggabungan tersebut akan menghasilkan


hash value atau message digest SHA256.

Contoh, Misalkan file a.docx berisi teks sebagai berikut:

abc

Pertama konversi isi teks ke dalam bit seperti berikut ini:

M=”abc”

Universitas Sumatera Utara


29

‘a’= 01100001 ‘b’= 01100010 ‘c’= 01100011

Maka M = 01100001 01100010 01100011

Dari keterangan diatas diketahui bahwa panjang pesan M = 24 bit, jika dilihat
di persamaan 2, panjang pesan yang disimbolkan dengan l. Proses berikutnya adalah
melakukan padding dengan cara menambahkan bit ‘1’ dan sisanya adalah bit ‘0’
sejumlah k. Dimana k merupakan hasil dari persamaan berikut.

k = l + 1  448 mod 512

k =24 + 1  448 mod 512

k = 25 448 mod 512

k = 448 -25 = 423

Maka banyak bit ‘0’ yang ditambahkan sejumlah 423 bit. Setelah itu tambahkan
jumlah panjang pesan pada akhir pesan yang di-padding. l = 24 = 00011000. Sehingga
didapati hasil pesan yang dipadding:

01100001 01100010 01100011 1 00…0 00…011000


 
423 bit 64 bit

Kemudian melakukan parsing pesan. Namun dalam contoh kasus ini karena
panjang pesan yang di-padding tidak melebihi 512 bit, maka hanya menghasilkan 1
blok 512 bit yaitu M(0). Tahap selanjutnya adalah membagi setiap blok 512 bit menjadi
16 blok yang terdiri 32 bit, M0(i), M1(i) ), …, M15(i).

M0(0) : 0110 0001 0110 0010 0110 0011 1000 0000


M1(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M2(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M3(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M4(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M5(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M6(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M7(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M8(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M9(0) : 0000 0000 0000 0000 0000 0000 0000 0000

Universitas Sumatera Utara


30

M10(0) : 0000 0000 0000 0000 0000 0000 0000 0000


M11(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M12(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M13(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M14(0) : 0000 0000 0000 0000 0000 0000 0000 0000
M15(0) : 0000 0000 0000 0000 0000 0000 0001 1000

Setelah proses parsing, maka berikutnya melakukan inisial hash value sebagai
berikut:

(0)
𝐻0 =6A09E667
(0)
𝐻1 =BB67AE85
(0)
𝐻2 =3C6EF372
(0)
𝐻3 =A54FF53A
(0)
𝐻4 =510E527F
(0)
𝐻5 =9B056887
(0)
𝐻6 =1F83D9AB
(0)
𝐻7 =5BE0CD19
Kemudian melakukan proses persiapan message schedule, tahap ini diawali
dengan mengkonveri setiap blok menjadi bilangan hexadesimal seperti berikut ini.

M0(0) : 61626380 M6(0) : 00000000 M12(0) : 00000000


M1(0) : 00000000 M7(0) : 00000000 M13(0) : 00000000
M2(0) : 00000000 M8(0) : 00000000 M14(0) : 00000000
M3(0) : 00000000 M9(0) : 00000000 M15(0) : 00000018
M4(0) : 00000000 M10(0) : 00000000
M5(0) : 00000000 M11(0) : 00000000

Nilai yang dimiliki Mi(j) menjadi nilai Wi(j), sehingga W0(0) = M0(0) dan seterusnya
hingga W63(i-1), dimana i adalah adalah jumlah blok 512 bit.

Selanjutnya melakukan inisialisasi variabel a,b,c,…,h, dimana nilai dari setiap


(0) (0) (0) (0)
vaiabel diambil dari initial hash value sehingga a = 𝐻0 , b = 𝐻1 , c = 𝐻2 ,…, h=𝐻7 .

Selanjutnya dilakukan proses komputasi fungsi SHA256 dari t=0 sampai t=63.
a b c d e f g h

Universitas Sumatera Utara


31

Init: 6A09E667 BB67AE85 3C6EF372 A54FF53A 510E527F 9B05688C 1F83D9AB 5BE0CD19

t=0 5D6AEBCD 6A09E667 BB67AE85 3C6EF372 FA2A4622 510E527F 9B05688C 1F83D9AB

t=1 5A6AD9AD 5D6AEBCD 6A09E667 BB67AE85 78CE7989 FA2A4622 510E527F 9B05688C

t=2 C8C347A7 5A6AD9AD 5D6AEBCD 6A09E667 F92939EB 78CE7989 FA2A4622 510E527F

… …. …. …. …. …. …. …. ….

t=63 506E3058 D39A2165 04D24D6C B85E2CE9 5EF50F24 FB121210 948D25B6 961F4894

Maka tahap berikutnya adalah menjumlahkan variabel a, b, c, d, e, f , g, h


yang sudah dikomputasi dengan initial hash value.

H0(0) = 506e3058 + 6a09e667 = ba7816bf


H1(0) = d39a2165 + bb67ae85 = 8f01cfea
H2(0) = 04d24d6c + 3c6ef372 = 414140de
H3(0) = b85e2ce9 + a54ff53a = 5dae2223
H4(0) = 5ef50f24 + 510e527f = b00361a3
H5(0) = fb121210 + 9b056887 = 96177a9c
H6(0) = 948d25b6 + 1f83d9ab = b410ff61
H7(0) = 961f4894 + 5be0cd19 = f20015ad

Terakhir gabungkan H0 – H7:

BA7816BF || 8F01CFEA || 414140DE || 5DAE2223 || B00361A3 || 96177A9C ||


B410FF61 || F20015AD

Sehingga didapat hash value atau message digest dari pesan M adalah:

BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F
20015AD

Universitas Sumatera Utara


32

2.6 Teori Kompleksitas Algoritma


Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi
yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal,
algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu singkat
memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu
lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Kompleksitas algoritma terdiri dari dua macam yaitu kompleksitas waktu dan
kompleksitas ruang (Ulfah Nur Azizah, 2013).

Kompleksitas waktu, dinyatakan oleh T(n), diukur dari jumlah tahapan


komputasi yang dibuthkan untuk menjalankan algoritma sebagai fungsi dari ukuran
masukan n, dimana ukuran masukan (n) merupakan jumlah data yang diproses oleh
sebuah algoritma . Sedangkan kompleksitas ruang, S(n), diukur dari memori yang
digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari
masukan n. Dengan menggunakan kompleksitas waktu atau kompleksitas ruang, dapat
ditentukan laju peningkatan waktu atau ruang yang diperlukan algoritma, seiring
dengan meningkatnya ukuran masukan(n).

Untuk nilai n cukup besar, bahkan tidak terbatas, dilakukan analisis efisiensi
asimptotik dari suatu algoritma untuk menentukan kompleksitas waktu yang sesuai
atau disebut juga kompleksitas waktu asimptotik. Notasi yang digunakan untuk
menentukan kompleksitas waktu asimptotik dengan melihat waktu tempuh (running
time) algoritma adalah notasi asimptotik (asymptotic notation). Kompleksitas waktu
asimptotik terdiri dari tiga macam antara lain:

1. (g(n)) yang dibaca Big Omega dengan nama lain the Asymptotic Lower
Bound yang digunakan untuk menentukan kompleksitas dalam keadaan
terbaik(best case).

2. Ɵ(g(n)) yang dibaca Big Theta dengan nama lain the Asymptotic Tight Bound
yang digunakan untuk menentukan kompleksitas dalam keadaan rata-rata
(average case).

Universitas Sumatera Utara


33

3. O(g(n)) yang dibaca Big O dengan nama lain the Asymptotic Upper Bound
yang digunakan untuk menentukan kompleksitas dalam keadaan
terburuk(worst case).

Notasi Ɵ menyatakan running time dari suatu algoritma untuk menentukan


kompleksitas dalam keadaan rata-rata. Notasi Ɵ memiliki beberapa bentuk. Notasi
Ɵ dapat berupa salah satu bentuk maupun kombinasi dari bentuk-bentuk berikut.

Bentuk Ɵ(1) memiliki arti bahwa algorima yang sedang dianalisis merupakan
algoritma konstan. Hal ini mengindikasikan bahwa running time algoritma
tersebut tetap, tidak tergantung pada n.

Ɵ(n) berarti algoritma tersebut merupakan algoritma linier. Artinya, nilai n


mempengaruhi running time algoritma, semakin besar n semakin besay running
time algoritma.

Ɵ(n2) berarti bahwa algoritma tersebut merupakan algoritma kuadratik.


Algoritma kuadratik biasanya hanya digunakan untuk kasus dengan n yang
berukuran kecil. Sebab, bila n dinaikkan menjadi dua kali semula, maka running
time algoritma bisa menjadi empat kali semula.

Ɵ(n3) berarti bahwa algoritma tersebut merupakan algoritma kubik. Pada


algoritma kubik, bila n dinaikkan menjadi dua kali semula, maka running time
algoritma bisa menjadi delapan kali semula.

Ɵ(2n) berarti bahwa algoritma tersebut merupakan algoritma eksponensial.


Pada kasus ini, bila n dinaikkan menjadi dua kali semula, maka running time
algoritma akan menjadi kuadrat kali semula.

Ɵ(log n) berarti bahwa algoritma tersebut merupakan algoritma logaritmik.


Pada kasus ini, laju pertumbuhan waktu lebih lambat dari pertumbuhan n.
Algorima yang termasuk algoritma logaritmik adalah algoritma yang memcahkan
persoalan besar dengan mentransformasikannya menjadi beberapa persoalan lebih
kecil dengan ukuran sama. Basis algoritma tidak terlalu penting, sebab bila

Universitas Sumatera Utara


34

dimisalkan n naik menjadi dua kali semula, log n meningkat sebesar jumlah
tetapan.

Bentuk Ɵ(n log n), terdapat pada algoritma yang membagi persoalan menjadi
beberapa persoalan kecil, menyelesaikan setiap persoalan secara independen,
kemudian menggabungkan solusi masing-masing persoalan.

Ɵ(n!) berarti bahwa algoritma tersebut merupakan algoritma faktorial. Pada


Algoritma jenis ini akan memproses setiap masukan dan menghubungkannya
dengan n-1 masukan lainnya. Bila n menjafi dua kali semula, maka running time
algoritma akan menjadi factorial dari 2n.

Gambar 2.9 Grafik Notasi Ɵ

Pada gambar 2.9, n0 merupakan nilai minimum n yang mungkin. Gambar


tersebut menunjukkan notasi Ɵ membatasi suatu fungsi f(n) agar berada dalam factor
konstan. Dinyatakan f(n) = Ɵ(g(n)) jika terdapat kontanta positif n0, c1, dan c2
sedemikian sehingga pada n0 dan di kanan n0, nilai f(n) selalu berada tepat pada c1g(n),
tepat pada c2g(n), atau di antara c1g(n) dan c2g(n).

Universitas Sumatera Utara


35

2.7 Penelitian yang Relevan

1. Pada penelitian terdahulu yang dilakukan oleh Marthin Benedict (2017)


tentang “Perbandingan Algoritma Message Digest-5 (MD5) dan
Gosudarstvennyi Standart (GOST) pada Hashing File Dokumen”
menyimpulkan Nilai running time pada algoritma message digest-5 (MD5)
lebih kecil dibandingkan dengan nilai running time algoritma Gosudarstvennyi
Standard (GOST). Artinya proses pada algoritma MD5 lebih cepat
dibandingkan proses pada algoritma GOST.

2. Pada penelitian terdahulu yang dilakukan oleh M. Wahyu Pujiutomo (2012)


tentang “Penggunaan Algoritma SHA256 Sebagai Pengganti Algoritma MD5
pada IPSec” menyimpulkan Algoritma SHA-256 dan MD5 adalah beberapa
contoh algoritma yang dipakai pada IPSec.Tetapi saat ini telah ditemukan
collision pada algoritma MD5, sehingga tidak lagi dianggap sebagai algoritma
yang aman digunakan. Pada algoritma SHA-256 yang relatif masih baru,
belum ditemukan collision yang menyebabkan 2 data yang berbeda tetapi
menghasilkan 1 buah enkripsi yang sama.Algoritma SHA-256 bukanlah
algoritma yang sempurna sebagai authentication code. Banyaknya waktu yang
dibutuhkan untuk proses enkripsi yang sering menjadi kendala. Tetapi hingga
kini SHA-256 masih dianggap sebagai algoritma yang masih sangat bagus
untuk digunakan pada IPSec.

Universitas Sumatera Utara


36

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis sistem merupakan bagian langkah pengenalan terhadap hal-hal yang


dibutuhkan sistem, sehingga sistem dapat bekerja dengan baik dan dapat memenuhi
tujuan utamanya. Analisis sistem dibuat untuk menggambarkan mengenai input,
proses dan output dari sistem yang akan dibuat. Beberapa hal yang dapat dilakukan
pada analisis sistem adalah sebagai berikut:

3.1.1 Analisis Masalah

Pada analisis masalah, sebab dan akibat diidentifikasi sehingga nantinya sistem yang
akan dibangun dapat bekerja sesuai dengan tujuan utama sistem tersebut dibangun.
Permasalahan yang ingin dipecahkan pada penelitian ini adalah untuk mengetahui
algoritma mana yang lebih baik antara algoritma Algoritma Message Digest 5 (MD5)
dan SHA 256 pada hashing file dokumen. Hashing file menggunakan algoritma
algoritma Algoritma Message Digest 5 (MD5) dan SHA 256 dipengaruhi oleh setiap
bit pada file yang dilakukan proses hashing. Jenis file yang digunakan yaitu file .doc
atau .docx.

Analisis masalah dapat lebih jelas terlihat dengan menggunakan diagram


ishikawa. Diagram ishikawa atau juga disebut diagram tulang ikan ini sendiri adalah
diagram sebab akibat yang biasa digunakan untuk mengidentifikasi, mengeksplorasi
dan menggambarkan suatu masalah. Pemakaian diagram ishikawa yang paling umum
adalah untuk mencegah defek serta mengembangkan kualitas sebuah produk. Diagram
ishikawa pada penelitian ini dapat dilihat pada Gambar 3.1

Universitas Sumatera Utara


37

Gambar 3.1 Diagram Ishikawa

3.1.2 Analisis Kebutuhan

Dalam membangun sebuah sistem ada hal-hal yang harus dipenuhi dan akan dibahas
pada analisis kebutuhan. Analisis kebutuhan dikelompokan menjadi 2 bagian yaitu:
1. Kebutuhan fungsional

Kebutuhan fungsional berisi aktivitas atau fungsi yang dapat dilakukan oleh
aplikasi yang akan dibangun. Kebutuhan fungsional pada aplikasi yang akan
dibangun pada penelitian ini adalah sebagai berikut:

a. Sistem dapat menginput file dengan ekstensi *.doc atau *.docx.

b. Sistem mampu memproses ekstensi file *.doc atau *.docx sehingga


menghasilkan nilai hash dengan algoritma Message digest-5 (MD5) dan
SHA256.

c. Sistem mampu menampilkan waktu proses hashing file . *.doc atau *docx
dengan algoritma Message digest-5 (MD5) dan SHA256.

Universitas Sumatera Utara


38

2. Kebutuhan non-fungsional

Kebutuhan non-fungsional merupakan kemampuan sistem dari segi kinerja dan


performa sehingga mendapatkan umpan balik yang baik dari user. Kebutuhan
non-fungsional pada aplikasi yang akan dibangun adalah sebagai berikut:

a. Performa

Sistem harus mampu melaksanakan setiap tugas secara utuh dalam selang
waktu yang tidak terlalu lama sesuai dengan ukuran data input yang diberikan.

b. Informasi

Sistem harus mampu menyediakan informasi tentang data berupa judul


program, about sistem, besar file Dokumen yang akan digunakan pada sistem.

c. Ekonomi

Sistem harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya
tambahan dalam penggunaan perangkat keras mamupun perangkat lunak.

d. Kontrol

Sistem yang telah dibangun harus tetap dikontrol setelah selesai dirancang
agar fungsi dan kinerja sistem tetap terjaga serta dapat memberikan hasil yang
sesuai dengan keinginan user.

e. Efisiensi

Sistem harus dirancang sesederhana mungkin agar memudahkan user (user


friendly) dalam menggunakan atau menjalakan aplikasi tersebut.

f. Pelayanan

Sistem yang telah dirancang bisa dikembangkan ke tingkat yang lebih


kompleks lagi bagi pihak-pihak yang ingin mengembangkan sistem tersebut.

Universitas Sumatera Utara


39

3.1.3 Analisis Proses

Tahap ini menjelaskan tahapan dan cara kerja dari sistem yang akan dibangun. Pada
sistem yang akan dibangun pertama-tama file dokumen dipilih dari direktori atau
tempat penyimpanan untuk nantinya akan dilakukan proses hashing. Setelah file
dokumen dipilih lalu proses hash dilakukan satu-per-satu dengan algoritma Message
digest-5 (MD5) dan SHA256, tidak boleh dilakukan sekaligus atau dalam waktu
bersamaan karena dapat mempengaruhi running time, sehingga running time menjadi
tidak akurat. Setelah itu sistem akan menampilkan running time dari algoritma yang
telah dijalankan.

3.2 Pemodelan

Penulis menggunakan Unified Modeling Language (UML) pada bagian ini sebagai
bahasa standar pemodelan yang digunakan dan berfungsi untuk merancang sistem.
Jenis UML yang digunakan pada penelitian ini terdiri dari use case diagram, activity
diagram dan sequence diagram.

3.2.1 Use Case Diagram

Use case diagram merupakan gambaran proses pada sistem dari sudut pandang user.
Use case diagram untuk sistem yang akan dibangun dapat dilihat pada Gambar 3.2

Gambar 3.2 Use Case Diagram

Use Case pada Gambar 3.2 di atas terlihat di mana user melakukan proses
hashing file dokumen pada menu hash. Proses yang ada pada menu hash yaitu,
pertama-tama user menginput atau membuka file dokumen di mana pada penelitian ini
ekstensi yang digunakan adalah *.doc atau *.docx. Setelah menginput file dokumen

Universitas Sumatera Utara


40

selanjutnya user melakukan proses hashing dengan algoritma Message digest-5


(MD5) dan SHA256 namun tidak dalam waktu yang bersamaan untuk mencegah
ketidakakuratan waktu hashing atau running time. Setelah itu nilai hash dari kedua
algoritma akan ditampilkan berikut dengan waktu proses hashing pada masing-masing
algoritma. Spesifikasi Use Case dapat diuraikan sebagai berikut.

1. Spesifikasi Use Case Hash

Spesifikasi use case Hash dapat dilihat pada Tabel 3.1.

Tabel 3.1 Spesifikasi Use Case Hash


Nama Hash
Actors Pengguna/User
Trigger Pengguna/User memilih menu tab Hash
Preconditions -
Post Condition Sistem menampilkan jendela untuk proses Hash
Success Scenario Pengguna/User berhasil mengeksekusi tab Hash
Alternative Flow

2. Spesifikasi Use Case Reset

Spesifikasi use case Reset dapat dilihat pada Tabel 3.2.

Tabel 3.2 Spesifikasi Use Case Reset


Nama Hash
Actors Pengguna/User
Trigger Pengguna/User mengakses tombol reset.
Preconditions User memilih menu tab Hash.
Post Condition Sistem menghapus setiap informasi berupa text yang
ditampilkan pada jendela Hash.
Success Scenario Pengguna/User berhasil mengeksekusi tombol reset.
Alternative Flow

Universitas Sumatera Utara


41

3. Spesifikasi Use Case Buka File Dokumen

Spesifikasi use case Buka File Dokumen dapat dilihat pada Tabel 3.3.

Tabel 3.3 Spesifikasi Use Case Buka File Dokumen


Nama Hash
Actors Pengguna/User
Trigger Pengguna/User mengakses tombol Buka File Dokumen
Preconditions Pengguna/User memilih menu tab Hash
Post Condition Sistem membaca File dokumen (*.docx)
Success Scenario 1. User mengeksekusi tombol buka File Dokumen
2. Sistem menampilkan jendela untuk mencari File
Dokumen (*.docx)
3. User memilih File Dokumen (*.docx)
4. User mengekseskusi tobol buka.
Alternative Flow -

3. Spesifikasi Use Case Hasing File dengan Algoritma MD5

Spesifikasi use case Hashing File dengan algoritma MD5 dapat dilihat pada Tabel
3.4.

Tabel 3.4 Spesifikasi Use Case Hashing File dengan Algoritma MD5
Nama Hash
Actors Pengguna/User
Trigger Pengguna/User mengakses tombol MD5
Preconditions Pengguna/User membuka File Dokumen (*.doc atau
*.docx).
Post Condition Sistem memproses nilai Hashing File Dokumen dengan
algoritma MD5.
Success Scenario 1. User mengeksekusi tombol MD5.
2. Sistem memproses nilai Hashing File Dokumen dengan
algoritma MD5.

Universitas Sumatera Utara


42

3. Sistem selesai memproses nilai Hashing File Dokumen


dengan algoritma MD5.
4. Sistem menampilkan hasil Hashing File Dokumen dan
running time dari algoritma MD5.
Alternative Flow -

4. Spesifikasi Use Case Hasing File dengan Algoritma SHA256

Spesifikasi use case Hashing File dengan Algoritma SHA256 dapat dilihat pada
Tabel 3.5.

Tabel 3.5 Spesifikasi Use Case Hashing File dengan Algoritma SHA256
Nama Hash
Actors Pengguna/User
Trigger Pengguna/User mengakses tombol SHA256.
Preconditions Pengguna/User membuka File Dokumen (*.doc atau
*.docx).
Post Condition Sistem memproses nilai Hashing File Dokumen dengan
algoritma SHA256.
Success Scenario 1. User mengeksekusi tombol SHA256.
2. Sistem memproses nilai Hashing File Dokumen dengan
algoritma SHA256.
3. Sistem selesai memproses nilai Hashing File Dokumen
dengan algoritma SHA256.
4. Sistem menampilkan hasil Hashing File Dokumen dan
running time dari algoritma SHA256.
Alternative Flow -

5. Spesifikasi Use Case Menampilkan Nilai Hash dan Running Time

Spesifikasi use case Menampilkan Nilai Hash dan Running Time dapat dilihat pada
Tabel 3.6.

Universitas Sumatera Utara


43

Tabel 3.6 Spesifikasi Use Case Menampilkan Nilai Hash dan Running Time
Nama Hash
Actors Pengguna/User
Trigger Pengguna/User mengakses tombol MD5 atau SHA256.
Preconditions Pengguna/User memproses Hash File Dokumen dengan
algoritma MD5 dan SHA256.
Post Condition Sistem menampilkan nilai Hash dan Running Time dari
algoritma MD5 dan SHA256.
Success Scenario 1. User mengakses tombol MD5 dan SHA256.
2. Sistem menampilkan nilai Hash dan Running Time dari
algoritma MD5 dan SHA256.
Alternative Flow -

3.2.2 Activity Diagram

Activity diagram merupakan gambaran alir aktivitas dalam sistem yang akan dibangun,
bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan
bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses
paralel yang mungkin terjadi pada beberapa eksekusi. Activity diagram pada sistem
yang akan dibangun dapat dilihat pada Gambar 3.3.

Universitas Sumatera Utara


44

Gambar 3.3 Activity Diagram proses Hash

3.2.3 Sequence Diagram

Sequence Diagram adalah bentuk pemodelan sistem yang menggambarkan hubungan


antar objek atau objek yang saling berinteraksi melalui pesan dalam eksekusi.
Sequence Diagram untuk sistem yang akan dibangun pada penelitian ini adalah
sebagai berikut.

Universitas Sumatera Utara


45

3.2.3.1 Sequence Diagram pada Proses Hash

Sequence diagram pada Proses Hash dapat dilihat pada Gambar 3.4.

Gambar 3.4 Sequence Diagram pada Proses Hash

Universitas Sumatera Utara


46

3.2.4 Flowchart Sistem

Flowchart dari sistem yang akan dibangun dapat dilihat pada Gambar 3.5 berikut.

Gambar 3.5 Flowchart Sistem

3.3 Perancangan Antarmuka Sistem (Interface)

Perancangan antarmuka sistem menampilkan antarmuka yang akan dibuat oleh


peneliti dan akan digunakan oleh user. Pada rancangan tampilan antarmuka sistem
terdapat menu Home, Hash dan About.

Universitas Sumatera Utara


47

3.3.1 Halaman Menu Home

Halaman menu Home merupakan tampilan awal pada sistem saat dibuka. Pada
tampilan ini terdapat beberapa menu bar yaitu, Home, Hash dan About. Rancangan
tampilan menu Home dapat dilihat pada Gambar 3.6 berikut.
10 11
1
8 9

2
4

Gambar 3.6 Rancangan Tampilan Menu Home

Keterangan Rancangan Tampilan Menu Home dapat dilihat pada Tabel 3.7. berikut.

Tabel 3.7 Keterangan Gambar Rancangan Tampilan Menu Home


No Keterangan
1 Menunjukan Menu Item Home
2 Menunjukan Button Menu Item Hash
3 Menunjukan Button Item Menu About me dan Latar Belakang
4 Menunjukan Label Judul Skripsi
5 Menunjukan Label Nama dan NIM
6 Menunjukan Picture Box Logo Fakultas
7 Menunjukan Label Program Studi
8 Menunjukan Picture Box Logo Fakultas
9 Menunjukan Label Nama Program
10 Menunjukan Menu Minimize
11 Menunjukan Menu Close

Universitas Sumatera Utara


48

3.3.2 Halaman Menu Hash

Halaman menu Hash merupakan tampilan utama yang digunakan untuk menghitung
nilai hash dari file dokumen berikut dengan running time-nya menggunakan algoritma
Message Digest-5 (MD5) dan Gosudarstvennyi Standard (Gost). Rancangan tampilan
menu Hash dapat dilihat pada Gambar 3.7 berikut.

14 15
13
12 1

2 4 5
6 7

3 9 10 11

Gambar 3.7 Rancangan Tampilan Menu Hash

Keterangan Rancangan Tampilan Menu Hash dapat dilihat pada Tabel 3.8. berikut.

Tabel 3.8 Keterangan Gambar Rancangan Tampilan Menu Hash


No Keterangan
1 Menunjukan Menu Item Home
2 Menunjukan Button Menu Item Hash
3 Menunjukan Button Item Menu About me dan Latar Belakang
4 Menunjukan Text Box untuk Open File
5 Menunjukan Button untuk Open File

Universitas Sumatera Utara


49

6 Menunjukan Button untuk menghitung Nilai Hash MD5 berikut dengan


running time-nya
7 Menunjukan Button untuk menghitung Nilai Hash SHA256 berikut dengan
running time-nya
8 Menunjukan Data Table untuk menampilkan nilai Hash dan running time
kedua algoritma
9 Menunjukan Button untuk menghitung rata-rata running time Hash
10 Menunjukan Button untuk menyimpan data pada Data Table
11 Menunjukan Button untuk mereset data atau informasi pada tampilan Hash
12 Menunjukan Picture Box Logo Fakultas
13 Menunjukan Label Nama Program
14 Menunjukan Menu Minimize
15 Menunjukan Menu Close

3.3.3 Halaman Menu About

Halaman menu About me dan Latar Belakang merupakan tampilan informasi tentang
biodata penulis dan beberapa keterangan lain. Rancangan tampilan menu Menunjukan
Button Item Menu About me dan Latar Belakang dapat dilihat pada Gambar 3.8 berikut.

10 11
9
8 1

2
4 5

Gambar 3.8 Rancangan Tampilan Menu About me dan Latar Belakang

Universitas Sumatera Utara


50

Keterangan Rancangan Tampilan Menu About me dan Latar Belakang dapat dilihat
pada Tabel 3.9. berikut.
Tabel 3.9 Keterangan Gambar Rancangan Tampilan Menu About

No Keterangan
1 Menunjukan Menu Item Home
2 Menunjukan Button Menu Item Hash
3 Menunjukan Button Item Menu About me dan Latar Belakang
4 Menunjukan Image untuk Foto Penulis
5 Menunjukan Text Box yang berisi biodata singkat penulis
6 Menunjukan Text Box untuk Ulasan Latar Belakang
7 Menunjukan Scrool Button untuk Ulasan
8 Menunjukan Picture Box Logo Fakultas
9 Menunjukan Label Nama Program
10 Menunjukan Menu Minimize
11 Menunjukan Menu Close

Universitas Sumatera Utara


51

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

Pada bagian ini, penulis akan memaparkan implementasi dan hasil pengujian pada
sistem dengan membandingkan algoritma Message Digest-5 (MD5) dan SHA256
yang sudah dibangun.

4.1 Implementasi

Tahap implementasi sistem merupakan lanjutan dari tahap analisis dan perancangan
sistem. Pada tahap ini sistem dibangun sesuai dengan fungsi utamanya menggunakan
bahasa pemrograman C# dan IDE visual studio 2015. Tampilan sistem diberikan
nuansa hijau dan biru dengan alasan, agar user merasa nyaman melihat tampilan sistem
dan disesuaikan dengan warna logo Universitas Sumatera Utara. Terdapat tiga
halaman tampilan pada sistem yang dibangun, yakni halaman Home, halaman Hash,
dan halaman About me dan Latar Belakang.

4.1.1 Tampilan Halaman Home

Halaman Home merupakan tampilan awal sistem yang tampil pada saat sistem pertama
kali dijalankan. Halaman ini berisi tentang informasi skripsi yang dibuat oleh penulis
dimana terdapat judul, nama, nim, logo universitas, dan keterangan program studi
beserta tahun dibuatnya skripsi. Tampilan halaman Home dapat dilihat pada Gambar
4.1 berikut.

Universitas Sumatera Utara


52

Gambar 4.1 Halaman Home

4.1.2 Tampilan Halaman Hash

Halaman Hash adalah tampilan utama dari program dimana hash dengan algoritma
Message Digest-5 (MD5) dan SHA256 dieksekusi untuk mengetahui nilai hash dan
running time dari kedua algoritma tersebut. Pertama, user memilih file dokumen
dengan ekstensi *.doc atau*.docx yang akan dicari nilai hash dan running timenya
dengan algoritma Message Digest-5 (MD5) dan SHA256. Kemudian user
mengeksekusi tombol MD5 atau SHA256, untuk mencari nilai hash MD5 dengan
mengeksekusi tombol MD5 dan nilai hash SHA-256 dengan mengeksekusi tombol
SHA256 berikut dengan running timenya dari file dokumen yang telah dipilih. Setelah
itu nilai hash dan running time akan ditampilkan pada dataGrid.

Gambar 4.2 Halaman Hash

Universitas Sumatera Utara


53

4.1.3 Tampilan halaman About me dan Latar Belakang

Halaman About me dan Latar Belakang merupakan tampilan yang berisi informasi
penulis dan informasi tentang penelitian yang dibuat. Pada tampilan ini terdapat foto,
Nama, NIM, Prodi, dan Kontak penulis beserta logo Fakultas Ilmu Komputer
Universitas Sumatera Utara. Di bagian bawah terdapat informasi atau latar belakang
dari penelitian yang dibuat oleh penulis.

Gambar 4.3 Halaman About

4.2. Pengujian Sistem

Pengujian sistem merupakan tahap berikutnya dari tahap analisis dan perancangan
sistem. Pengujian sistem dilakukan untuk mengindentifikasi dari sistem yang telah
dibangun apakah berhasil atau tidak. Karena sistem yang dibangun diharapkan
menjadi sarana penyelesaian suatu permasalahan, sistem tersebut harus diuji dengan
beberapa kasus yang berbeda. Sistem yang baik adalah sistem yang sudah diuji dan
dianggap telah memenuhi kebutuhan para user.

Dalam penulisan Skripsi ini, pengujian terhadap aplikasi perbandingan


algoritma Message Digest-5 (MD5) dan SHA256 pada file dokumen dengan ekstensi
*.doc atau *.docx. Aplikasi yang telah dibangun dilakukan dengan menguji kinerja
atau running time tiap algoritma dengan beberapa file dokumen yang memiliki besar

Universitas Sumatera Utara


54

ukuran file berbeda. File yang sama akan diuji satu demi satu dengan algoritma
message digest 5(MD5) dan SHA256, kemudian hasilnya akan dibandingkan.
Pengujian perangkat lunak dan implementasinya mengacu pada kualitas perangkat
lunak.

Spesifikasi perangkat keras yang digunakan untuk proses pengujian sistem ini adalah:

1. Intel(R) Core(TM) i3-2430M CPU @ 2,40GHz (4CPUs),~2.4 Ghz


2. Memory (RAM) 8 GB

Sedangkan spesifikasi perangkat lunak yang digunakan adalah:

1. Sistem Operasi Windows 10 Profesional 64 Bit


2. Visual Studio 2015
3. Microsoft Office 2013

4.2.1 Pengujian Algoritma Message Digest 5(MD5)

Pengujian dengan algoritma Message Digest 5 (MD5) akan dilakukan dengan


menggunakan tiga sample dan pengujian setiap sample akan dilakukan sebanyak tujuh
kali percobaan yang akan menghasilkan output tujuh nilai running time berbeda. Tujuh
nilai running time tersebut akan dirata-ratakan dengan mengaktifkan fungsi rata-rata
pada sistem dengan cara menekan tombol rata-rata pada sistem.

4.2.1.1 Pengujian Pertama pada Algoritma Message Digest 5(MD5)

Pengujian pertama dilakukan ke file dokumen yang memiliki ekstensi *.docx yang
diberi nama Sample1.docx. Dari pengujian tersebut maka diperoleh hasil sebagai
berikut:

Universitas Sumatera Utara


55

Gambar 4.4 Hasil Pengujian Sample 1 dengan Algoritma MD5

Pada Gambar 4.4 dapat dilihat bahwa ada tujuh kali percobaan pada Sample1.docx
menggunakan algoritma MD5 dimana data hash value dan nilai running time setiap
percobaannya dapat dilihat sebagai berikut:
Ukuran File = 11539 bytes
Hash Value = 98B62AB5CD7D3BBF13D529FE5BDAC629
Percobaan pertama = 5.4544 milisekon
Percobaan kedua = 3.0563 milisekon
Percobaan ketiga = 2.6735 milisekon
Percobaan keempat = 3.4480 milisekon
Percobaan kelima = 2.8266 milisekon
Percobaan keenam = 2.9647 milisekon
Percobaan ketujuh = 3.1273 milisekon
Rata-rata waktu = 3.3644 milisekon

4.2.1.2 Pengujian kedua pada Algoritma Message Digest 5(MD5)

Pengujian kedua dilakukan ke file dokumen yang memiliki ekstensi *.doc yang diberi
nama Sample 2.doc. Dari pengujian tersebut maka diperoleh hasil sebagai berikut:

Universitas Sumatera Utara


56

Gambar 4.5 Hasil Pengujian Sample 2 dengan Algoritma MD5

Pada Gambar 4.5 dapat dilihat bahwa ada tujuh kali percobaan pada Sample 2.doc
menggunakan algoritma MD5 dimana data hash value dan nilai running time setiap
percobaannya dapat dilihat sebagai berikut:
Ukuran File = 22528 bytes
Hash Value = 577CA8666C87EAE17E6A053FE3812E4C
Percobaan pertama = 4.1561 milisekon
Percobaan kedua = 2.6179 milisekon
Percobaan ketiga = 2.8228 milisekon
Percobaan keempat = 4.0095 milisekon
Percobaan kelima = 3.1234 milisekon
Percobaan keenam = 4.4114 milisekon
Percobaan ketujuh = 4.5786 milisekon
Rata-rata waktu = 3.674242857143 milisekon

4.2.1.3 Pengujian ketiga pada Algoritma Message Digest 5(MD5)

Pengujian ketiga dilakukan ke file dokumen yang memiliki ekstensi *.doc dengan
ukuran yang lebih besar yang diberi nama sample3.doc. Dari pengujian tersebut maka
diperoleh hasil sebagai berikut:

Universitas Sumatera Utara


57

Gambar 4.6 Hasil Pengujian Sample 3 dengan Algoritma MD5

Pada Gambar 4.6 dapat dilihat bahwa ada tujuh kali percobaan pada sample3.doc
menggunakan algoritma MD5 dimana data hash value dan nilai running time setiap
percobaannya dapat dilihat sebagai berikut:
Ukuran File = 47104 bytes
Hash Value = 14206DAB6EA6E8092D536DC36C26E040
Percobaan pertama = 5.0456 milisekon
Percobaan kedua = 3.5151 milisekon
Percobaan ketiga = 3.7619 milisekon
Percobaan keempat = 3.9363 milisekon
Percobaan kelima = 4.0762 milisekon
Percobaan keenam = 8.6981 milisekon
Percobaan ketujuh = 4.4499 milisekon
Rata-rata waktu = 4.7833 milisekon

4.2.1.4 Grafik Running Time Rata-rata pada Algoritma Message Digest 5(MD5)

Grafik running time rata-rata pada pengujian pertama, kedua, dan ketiga dengan
menggunakan algoritma MD5 dapat dilihat sebagai berikut:

Universitas Sumatera Utara


58

R U N N I N G T I M E R ATA - R ATA ( M S )
Running Time Rata-rata(ms)

4.7833
running time(ms)

3.674242857
3 3.3644

0
Sample1.docx (11539 bytes) Sample2.doc (22528 bytes) Sample3.doc(47104 bytes)

Gambar 4.7 Grafik Running Time Rata-rata pada Pengujian Pertama, Kedua, dan
Ketiga dengan MD5

Gambar 4.7 merupakan grafik running time rata-rata algoritma MD5. Pada
grafik di atas dapat diketahui running time rata-rata dengan menggunakan algoritma
MD5 pada pengujian pertama sampai ketiga dapat dilihat bahwa ukuran file
mempengaruhi proses running time dokumen. Dimana besarnya ukuran berbanding
lurus dengan besarnya running time.

4.2.2 Pengujian Algoritma SHA256

Sama halnya dengan pengujian pada MD5 maka pengujian pada algoritma SHA256
akan dilakukan juga dengan menggunakan tiga sample dan pengujian setiap sample
akan dilakukan sebanyak tujuh kali percobaan yang akan menghasilkan output tujuh
nilai running time berbeda. Tujuh nilai running time tersebut akan dirata-ratakan
dengan mengaktifkan fungsi rata-rata pada sistem dengan cara menekan tombol rata-
rata pada sistem.

Universitas Sumatera Utara


59

4.2.2.1 Pengujian Pertama pada Algoritma SHA256

Pengujian pertama dilakukan ke file dokumen yang memiliki ekstensi *.docx yang
diberi nama sample1.docx. Dari pengujian tersebut maka diperoleh hasil sebagai
berikut:

Gambar 4.8 Hasil Pengujian Sample 1 dengan Algoritma SHA256

Pada Gambar 4.8 dapat dilihat bahwa ada tujuh kali percobaan pada sample1.docx
menggunakan algoritma SHA256 dimana data hash value dan nilai running time setiap
percobaannya dapat dilihat sebagai berikut:
Ukuran File = 11539 bytes
Hash Value :
32E527EBBFD81F6B7739A87F88A4E4AB208DBD50D170DE0D0DF772A60C
79529E
Percobaan pertama = 9.9553 milisekon
Percobaan kedua = 8.7584 milisekon
Percobaan ketiga = 7.9591 milisekon
Percobaan keempat = 7.1864 milisekon
Percobaan kelima = 6.6411 milisekon
Percobaan keenam = 6.6835 milisekon
Percobaan ketujuh = 10.204 milisekon
Rata-rata waktu = 8.198342857143 milisekon

Universitas Sumatera Utara


60

4.2.2.2 Pengujian Kedua pada Algoritma SHA256

Pengujian kedua dilakukan ke file dokumen yang memiliki ekstensi *.doc yang diberi
nama sample2.doc. Dari pengujian tersebut maka diperoleh hasil sebagai berikut:

Gambar 4.9 Hasil Pengujian Sample 2 dengan Algoritma SHA256

Pada Gambar 4.9 dapat dilihat bahwa ada tujuh kali percobaan pada sample2.doc
menggunakan algoritma SHA256 dimana data hash value dan nilai running time setiap
percobaannya dapat dilihat sebagai berikut:
Ukuran File = 22528 bytes
Hash Value :
25B0F833564169D56741059DCCFA09ACCF891DCFC8042323090D83BD08D2
9FA4
Percobaan pertama = 11.4354 milisekon
Percobaan kedua = 9.46050 milisekon
Percobaan ketiga = 11.1852 milisekon
Percobaan keempat = 10.0306 milisekon
Percobaan kelima = 10.0913 milisekon
Percobaan keenam = 9.71930 milisekon
Percobaan ketujuh = 9.83170 milisekon
Rata-rata waktu = 10.25057142857 milisekon

Universitas Sumatera Utara


61

4.2.2.3 Pengujian Ketiga pada Algoritma SHA256

Pengujian ketiga dilakukan ke file dokumen yang memiliki ekstensi *.doc dengan
ukuran yang lebih besar yang diberi nama sample3.doc. Dari pengujian tersebut maka
diperoleh hasil sebagai berikut:

Gambar 4.10 Hasil Pengujian Sample 3 dengan Algoritma SHA256

Pada Gambar 4.10 dapat dilihat bahwa ada tujuh kali percobaan pada sample3.doc
menggunakan algoritma SHA256 dimana data hash value dan nilai running time setiap
percobaannya dapat dilihat sebagai berikut:
Ukuran File = 47104 bytes
Hash Value :
42A0E1BCE1DFC2889BB0EC4A442BDFAF924C901971E187FFEFBD32734B
F91CE7
Percobaan pertama = 18.0355 milisekon
Percobaan kedua = 16.0765 milisekon
Percobaan ketiga = 16.8351 milisekon
Percobaan keempat = 16.5426 milisekon
Percobaan kelima = 16.7440 milisekon
Percobaan keenam = 16.1440 milisekon
Percobaan ketujuh = 17.2875 milisekon
Rata-rata waktu = 16.8093142857143 milisekon

Universitas Sumatera Utara


62

4.2.2.4 Grafik Running Time Rata-rata pada Algoritma SHA256

Grafik running time rata-rata pada pengujian pertama, kedua, dan ketiga dengan
menggunakan algoritma SHA256 dapat dilihat sebagai berikut:

R U N N I N G T I M E R ATA - R ATA ( M S )
Running Time Rata-rata(ms)

18
16
16.80931429
14
running time(ms)

12
10
10.25057143
8
8.198342857
6
4
2
0
Sample1.docx (11539 bytes) Sample2.doc (22528 bytes) Sample3.doc(47104 bytes)

Gambar 4.11 Grafik Running Time Rata-rata pada Pengujian Pertama, Kedua, dan
Ketiga dengan SHA256

Pada Gambar 4.11 di atas dapat diketahui running time rata-rata dengan
menggunakan algoritma SHA256 pada pengujian pertama sampai ketiga, sama dengan
MD5 dapat dilihat bahwa ukuran file mempengaruhi proses running time dokumen.
Dimana besarnya ukuran berbanding lurus dengan besarnya running time.

4.2.3 Perbandingan Running Time Rata-rata MD5 dengan SHA256

Setelah proses pengujian selesai dilakukan terhadap masing-masing algoritma


message digest 5(MD5) dan SHA256 pada tiga sample file dokumen yang mempunyai
ekstensi *.doc atau *.docs dan juga memiliki ukuran yang berbeda-beda maka
didapatlah nilai running time rata-rata yang berbeda untuk kedua algoritma tersebut
dengan grafik seperti di bawah ini.

Universitas Sumatera Utara


63

RUNNING TIME RATA -RATA(MS)


Running Time Rata-rata MD5 Running Time Rata-rata SHA256

18
16
16.80931429
14
Running Time(ms)

12
10
10.25057143
8
8.198342857
6
4
4.7833
2 3.3644 3.674242857
0
Sample1.docx (11539 bytes) Sample2.doc (22528 bytes) Sample3.doc(47104 bytes)

Gambar 4.12 Grafik Running Time Rata-rata pada MD5 dan SHA256

Pada Gambar 4.12 di atas dapat diketahui running time rata-rata dari algoritma
MD5 lebih cepat dibandingkan algoritma MD5.

4.3 Kompleksitas Algoritma

Perhitungan kompleksitas dari algoritma Message Digest 5 (MD5) dan SHA256 dapat
dilihat sebagai berikut.

4.3.1 Kompleksitas Algoritma Message Digest 5 (MD5)


Perhitungan Kompleksitas algoritma Message Digest 5 dapat dilihat pada Tabel 4.3
berikut.
Tabel 4.1 Kompleksitas Algoritma Message Digest 5 (MD5)
Code C # C#
var int[64] r, K C1 1 C1
r[ 0..15] := { 7, 12, 17, 22, 7,
12, 17, 22, 7, 12, 17, 22, 7, C2 1 C2
12, 17, 22 }
r[16..31] := { 5, 9, 14, 20, 5,
9, 14, 20, 5, 9, 14, 20, 5, C2 1 C2
9, 14, 20 }
r[32..47] := { 4, 11, 16, 23, 4,
11, 16, 23, 4, 11, 16, 23, 4, C2 1 C2
11, 16, 23 }

Universitas Sumatera Utara


64

r[48..63] := { 6, 10, 15, 21, 6,


10, 15, 21, 6, 10, 15, 21, 6, C2 1 C2
10, 15, 21 }
for i from 0 to 63 C3 64 64C3
k[i] := floor(232 × abs(sin(i
C2 64 64C2
+ 1)))
end for C4 1 C4
var int h0 := 0x67452301 C2 1 C2
var int h1 := 0xefcdab89 C2 1 C2
var int h2 := 0x98badcfe C2 1 C2
var int h3 := 0x10325476 C2 1 C2
append "1" bit to message C5 1 C5
append "0" bit until message
C5 1 C5
length in bits ≡ 448 (mod 512)
append original length in bits
C5 1 C5
mod (2 pow 64) to message
for each 512-bit chunk of message C6 N C6N
break chunk into sixteen 32-
C6 N C6N
bit words M[j], 0 ≤ j ≤ 15
var int a := a0 C2 N C2N
var int b := b0 C2 N C2N
var int c := c0 C2 N C2N
var int d := d0 C2 N C2N
for i from 0 to 63 C3 64N 64C3N
if 0 ≤ i ≤ 15 then C7 16N 16C7N
f := (b and c) or
C2 16N 16C2N
((not b) and d)
g := i C2 16N 16C2N
else if 16 ≤ i ≤ 31 C7 16N 16C7N
f := (d and b) or
C2 16N 16C2N
((not d) and c)
g := (5×i + 1) mod 16 C2 16N 16C2N
else if 32 ≤ i ≤ 47 C7 16N 16C7N
f := b xor c xor d C2 16N 16C2N
g := (3×i + 5) mod 16 C2 16N 16C2N
else if 48 ≤ i ≤ 63 C7 16N 16C7N
f := c xor (b or (not
C2 16N 16C2N
d))
g := (7×i) mod 16 C2 16N 16C2N
Temp := d C2 64N 64C2N
d := c C2 64N 64C2N
c := b C2 64N 64C2N
b := ((a + f +k(i)+w(g))
C2 64N 64C2N
leftrotater(i)) + b
a := Temp C2 64N 64C2N
end for C4 N C4N

Universitas Sumatera Utara


65

h0 := h0 + a C2 N C2N
h1 := h2 + B C2 N C2N
h2 := h3 + C C2 N C2N
h3 := h4 + D C2 N C2N
var char digest[16] := h0 append
C2 1 C2
h1 append h2 append h3

∑ = T(n)
= (C1+ 73C2 + 64C3 + C4 + 3C5)N0 + (456C2+64C3+C4+2C6+64C7)N

= Ɵ(N)

5.3.1 Kompleksitas Algoritma SHA256

Perhitungan Kompleksitas algoritma SHA256 dapat dilihat pada Tabel 4.2 berikut.

Tabel 4.2 Kompleksitas Algoritma SHA256


Code C # C#
h0 := 0x6a09e667 C1 1 C1
h1 := 0xbb67ae85 C1 1 C1
h2 := 0x3c6ef372 C1 1 C1
h3 := 0xa54ff53a C1 1 C1
h4 := 0x510e527f C1 1 C1
h5 := 0x9b05688c C1 1 C1
h6 := 0x1f83d9ab C1 1 C1
h7 := 0x5be0cd19 C1 1 C1
K [0..15] :={ 0x428a2f98,
0x71374491, 0xb5c0fbcf,
0xe9b5dba5, 0x3956c25b,
0x59f111f1, 0x923f82a4,
0xab1c5ed5, 0xd807aa98, C1 1 C1
0x12835b01, 0x243185be,
0x550c7dc3, 0x72be5d74,
0x80deb1fe, 0x9bdc06a7,
0xc19bf174}
K [16..31] :={0xe49b69c1,
0xefbe4786, 0x0fc19dc6,
0x240ca1cc, 0x2de92c6f,
0x4a7484aa, 0x5cb0a9dc,
0x76f988da, 0x983e5152, C1 1 C1
0xa831c66d, 0xb00327c8,
0xbf597fc7, 0xc6e00bf3,
0xd5a79147, 0x06ca6351,
0x14292967}
K [32..47] := {0x27b70a85,
0x2e1b2138, 0x4d2c6dfc, C1 1 C1
0x53380d13, 0x650a7354,

Universitas Sumatera Utara


66

0x766a0abb, 0x81c2c92e,
0x92722c85, 0xa2bfe8a1,
0xa81a664b, 0xc24b8b70,
0xc76c51a3, 0xd192e819,
0xd6990624, 0xf40e3585,
0x106aa070}
K [48..63] :={0x19a4c116,
0x1e376c08, 0x2748774c,
0x34b0bcb5, 0x391c0cb3,
0x4ed8aa4a, 0x5b9cca4f,
0x682e6ff3, 0x748f82ee, C1 1 C1
0x78a5636f, 0x84c87814,
0x8cc70208, 0x90befffa,
0xa4506ceb, 0xbef9a3f7,
0xc67178f2}
append single '1' bit C2 1 C2
append K '0' bits, where K is the
minimum number >= 0 such that
C2 1 C2
L + 1 + K + 64 is a multiple
of 512
append L as a 64-bit big-endian
integer, making the total post-
C2 1 C2
processed length a multiple of
512 bits
append original length in bits
C2 1 C2
mod (2 pow 64) to message
break message into 512-bit chunks C3 N C3N
for each chunk
create a 64-entry message
C4 N C4N
schedule array w[0..15] of
32-bit words
copy chunk into first 16
words w[0..15] of the message C3 N C3N
schedule array
end for C5 N C5N
for i from 16 to 63 C4 48N 48C4N
s0 := (w[i-15] rightrotate 7)
xor (w[i-15] rightrotate
C1 48N 48C1N
18) xor (w[i-15] rightshift
3)
s1 := (w[i-2] rightrotate 17)
xor (w[i-2] rightrotate 19) C1 48N 48C1N
xor (w[i-2] rightshift 10)
w[i] := w[i-16] + s0 + w[i-7]
C1 48N 48C1N
+ s1
end for C5 N C5N
a := h0 C1 1 C1
b := h1 C1 1 C1
c := h2 C1 1 C1
d := h3 C1 1 C1

Universitas Sumatera Utara


67

e := h4 C1 1 C1
f := h5 C1 1 C1
g := h6 C1 1 C1
h := h7 C1 1 C1
for i from 0 to 63 C4 64N 64C4N
S1 := (e rightrotate 6) xor
(e rightrotate 11) xor (e C1 64N 64C1N
rightrotate 25)
ch := (e and f) xor ((not e)
C1 64N 64C1N
and g)
temp1 := h + S1 + ch + k[i] +
C1 64N 64C1N
w[i]
S0 := (a rightrotate 2) xor
(a rightrotate 13) xor (a C1 64N 64C1N
rightrotate 22)
maj := (a and b) xor (a and
C1 64N 64C1N
c) xor (b and c)
temp2 := S0 + maj C1 64N 64C1N
h := g C1 64N 64C1N
g := f C1 64N 64C1N
f := e C1 64N 64C1N
e := d + temp1 C1 64N 64C1N
d := c C1 64N 64C1N
c := b C1 64N 64C1N
b := a C1 64N 64C1N
a := temp1 + temp2 C1 64N 64C1N
end for C5 N C5N
h0 := h0 + a C1 1 C1
h1 := h1 + b C1 1 C1
h2 := h2 + c C1 1 C1
h3 := h3 + d C1 1 C1
h4 := h4 + e C1 1 C1
h5 := h5 + f C1 1 C1
h6 := h6 + g C1 1 C1
h7 := h7 + h C1 1 C1
digest := hash := h0 append h1
append h2 append h3 append h4 C1 1 C1
append h5 append h6 append h7

∑ = T(n)
= (29C1 + 4C2)N0 + (10140C1 + 2C3 + 64C4 + 2C5)N1

= Ɵ(N)

Universitas Sumatera Utara


68

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan
Berdasarkan hasil studi literatur, analisis, perancangan, implementasi, dan pengujian
sistem serta kompleksitas yang telah didapat, maka kesimpulan yang didapat adalah
sebagai berikut:

1. Hasil hash dari algoritma Message Digest-5 (MD5) dan SHA256 menghasilkan
keluaran hash value atau message digest yang mempunyai panjang data yang
berbeda, dimana panjang hash pada MD5 berjumlah 32 karakter hexadesimal
sedangkan SHA256 memiliki panjang hash berjumlah 64 karakter
hexadesimal.
2. Nilai running time pada algoritma Message Digest-5 (MD5) lebih kecil
dibandingkan dengan nilai running time algoritma SHA256. Dimana proses
pada algoritma MD5 lebih cepat dibandingkan proses pada algoritma SHA256.
3. Kompleksitas big Ɵ algoritma Message Digest-5 (MD5) adalah Ɵ(N) dan big
Ɵ algoritma SHA256 adalah Ɵ(N). Kompleksitas kedua algoritma sama-sama
Ɵ(N) yang artinya bernilai linier. Artinya semakin besar data yang diproses,
maka membutuhkan waktu (running time) yang semakin besar pula.

5.2 Saran

Saran-saran yang untuk penelitian maupun pengembangan berikutnya adalah:

1. Sistem ini hanya bisa membandingkan dua algoritma hash yaitu MD5 dan
SHA256, untuk penelitian berikutnya dapat dikembangkann untuk
membandingkan tiga atau lebih algoritma hash yang ada.

Universitas Sumatera Utara


DAFTAR PUSTAKA

Azizah, Ulfah Nur. 2013. Perbandingan Detektor Tepi Prewit dan Detektor Laplacian
Berdasarka Kompleksitas Waktu dan Hasil Citra. Skripsi. Universitas Pendidikan
Indonesia.

Benedict, Marthin. 2017. Perbandingan Algoritma Message Digest-5(MD5) dan


Gosudarstvennyi Standart (GOST) pada Hashing File Dokumen. Skripsi.
Universitas Sumatera Utara.

Kromodimoeljo, Sentot. 2010.Teori dan Aplikasi Kriptografi. Buku.SPK IT Consulting.

Munir, Rinaldi. 2006.Kriptografi. Buku. Informatika, Bandung.

Pujiutomo, M. Wahyu. 2012. Penggunaan Algoritma SHA-256 sebagai Pengganti


Algoritma MD5 pafa IPSec. Jurnal. Universitas Dian Nuswantoro Semarang.

Suprapto. 2008.Bahasa Pemrograman untuk SMK. Buku. Direktorat Pembinaan Sekolah


Menengah Kejuruan.

Scheneier, Bruce. 1996.Applied Cryptography 2nd ed. Buku. Illinois, USA.

Harahap, Rosdiyanti. 2010. Sistem Pengamanan Data Teks Menggunakan Algoritma


Message Digest-5. Skripsi. Universitas Sumatera Utara.

Apridiansyah, Yofi & Rifqo, Muhammad Husni. 2015. Aplikasi Keamanan Lembar Hasil
Studi Menggunakan Algoritma Message d]Digest 5. Jurnal. Bengkulu

Soesianto, F. & Dwijono, Djoni. 2006. Logika Matematika untuk Ilmu Komputer. Buku.
Penerbit Andi: Yogyakarta.

Hartono, Djogiyanto. 1999. Pengenalan Komputer. Buku. Penerbit Andi:Yogyakarta.

Universitas Sumatera Utara


Rusqianto & Qashlim, Akhmad. 2016. Implementasi Algoritma MD5 untuk Keamanan
Dokumen. Jurnal. Universitas Al Asyariah Mandar.

Rivest, Ron. 1992. The MD5 Message-Digest Algorithm. Jurnal. MIT

Yusmantoro, S., Hermansyah, E., Efendi, R. 2014. Rancang Bangun Aplikasi Pengamanan
Keaslian Surat Izin Tempat Usaha Menggunakan Algoritma Elgamal dan Secure
Hash Algorithm 256 Studi Kasus: Badan Pelayanan Perizinan Terpadu(BPPT)
Kota Bengkulu. Jurnal. Universitas Bengkulu.

Fikri, Abdurrisyad. 2011. Studi Perbanding Penggunaan Algoritma Hash SHA256 dengan
Simetrik dan Asimetrik Ciphers dalam Perancangan Secure SWF Rich Internet
Aplication(RIA). Jurnal. Intitut Teknologi Bandung.

Anonim. Descriptions of SHA-256, SHA-384, and SHA-512. Didapat dari :


http://www.iwar.org.uk/comsec/resources/cipher/sha256-384-512.pdf. Diakses
pada 24 Juli 2017.
Anonim. Descriptions of SHA-256, SHA-384, and SHA-512. Didapat dari : http://www.iwar.org.uk/comsec/resources/cipher/sha256-384-512.pdf. Diakses pada 19 April
2016.

Universitas Sumatera Utara


A1

LISTING PROGRAM

1. Form1.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{

public partial class home : Form


{
private void button1_Click(object sender, EventArgs e)
{
if (!homepnl.Controls.Contains(UserHsh.Instance))
{
homepnl.Controls.Add(UserHsh.Instance);
UserHsh.Instance.Dock = DockStyle.Fill;
UserHsh.Instance.BringToFront();
}
else
UserHsh.Instance.BringToFront();
}

public home()
{
InitializeComponent();
}

private void pictureBox2_Click(object sender, EventArgs e)


{
this.Close();
}

private void button1_MouseDown(object sender, MouseEventArgs e)


{

}
int mouseX = 0, mouseY = 0;
bool mouseDown;

private void headerpanel_MouseDown(object sender, MouseEventArgs e)


{
mouseDown = true;
}

private void headerpanel_MouseMove(object sender, MouseEventArgs e)


{
if(mouseDown)
{
mouseX = MousePosition.X - 350;
mouseY = MousePosition.Y - 40;

this.SetDesktopLocation(mouseX, mouseY);
}

Universitas Sumatera Utara


A2

private void pictureBox3_Click(object sender, EventArgs e)


{
WindowState = FormWindowState.Minimized;
}

private void pictureBox4_Click(object sender, EventArgs e)


{
if (!homepnl.Controls.Contains(UserHome.Instance))
{
homepnl.Controls.Add(UserHome.Instance);
UserHome.Instance.Dock = DockStyle.Fill;
UserHome.Instance.BringToFront();
}
else
UserHome.Instance.BringToFront();
}

private void btnprofil_Click(object sender, EventArgs e)


{
if (!homepnl.Controls.Contains(UserProfil.Instance))
{
homepnl.Controls.Add(UserProfil.Instance);
UserProfil.Instance.Dock = DockStyle.Fill;
UserProfil.Instance.BringToFront();
}
else
UserProfil.Instance.BringToFront();
}

private void headerpanel_MouseUp(object sender, MouseEventArgs e)


{
mouseDown = false;
}
}
}

2. UserHome.cs

using System.Windows.Forms;

namespace WindowsFormsApplication2
{
public partial class UserHome : UserControl
{
private static UserHome _instance;

public static UserHome Instance


{
get
{
if (_instance == null)
_instance = new UserHome();
return _instance;

Universitas Sumatera Utara


A3

}
public UserHome()
{
InitializeComponent();
}

}
}

3. UserHsh.cs

using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.Data;
using System.IO;

namespace WindowsFormsApplication2
{
public partial class UserHsh : UserControl
{

OpenFileDialog openFileDialog1 = new OpenFileDialog();

private byte[] hasil_md5 = null;


private string hasil_sha256;
Stopwatch stopWatch_md5, stopWatch_sha256;
DataTable table;

private bool RR = false;

private static UserHsh _instance;

public static UserHsh Instance


{
get
{
if (_instance == null)
_instance = new UserHsh();
return _instance;

}
}

private void MD5Button_Click(object sender, EventArgs e)


{
if (textBox1.Text == "")
{
textBox1.Focus();
} else
{
stopWatch_md5 = new Stopwatch();
stopWatch_md5.Start();
Proses_MD5();
stopWatch_md5.Stop();
TimeSpan ts = stopWatch_md5.Elapsed;
MessageBox.Show("RunTime " + stopWatch_md5.Elapsed.TotalMilliseconds +
" MS");
}
}

Universitas Sumatera Utara


A4

private void SHA256Button_Click(object sender, EventArgs e)


{
if (textBox1.Text == "")
{
textBox1.Focus();
}
else
{
stopWatch_sha256 = new Stopwatch();
stopWatch_sha256.Start();
Proses_SHA256();
stopWatch_sha256.Stop();
TimeSpan ts = stopWatch_sha256.Elapsed;
MessageBox.Show("RunTime " +
stopWatch_sha256.Elapsed.TotalMilliseconds + " MS");
}
}

public UserHsh()
{
InitializeComponent();
}

private void OpenButton_Click(object sender, EventArgs e)


{
// Displays an OpenFileDialog so the user can select a Cursor.
openFileDialog1.Filter = "Dokumen(*.doc ;*.docx) |*.doc;*.docx";
openFileDialog1.Title = "Select a Document";

// Show the Dialog.


// If the user clicked OK in the dialog and file was selected, open it.
var result = openFileDialog1.ShowDialog();
if (result == DialogResult.OK)
{
//if the file opened the name of the file will be entried to text box
textBox1.Text = openFileDialog1.FileName;
}
}

private void ResetButton_Click(object sender, EventArgs e)


{
DialogResult result = MessageBox.Show("Anda yakin ingin reset?", "Reset",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
textBox1.Text = null;
textBox2.Text = null;
DGV.DataMember = null;
RR = false;
SHA256Button.Enabled = true;
MD5Button.Enabled = true;
}
}

private void Proses_MD5()


{
hasil_md5 = MD5.computeMD5(File.ReadAllBytes(textBox1.Text));
textBox2.Text = MD5.ByteArrayToHexString(hasil_md5);

DGV.Rows.Add();

Universitas Sumatera Utara


A5

int i = DGV.Rows.Count - 1;
DGV.Rows[i].Cells[0].Value = i + 1;
DGV.Rows[i].Cells[1].Value = openFileDialog1.SafeFileName;
DGV.Rows[i].Cells[2].Value = new FileInfo(openFileDialog1.FileName).Length
+ " bytes";
DGV.Rows[i].Cells[3].Value = textBox2.Text;
DGV.Rows[i].Cells[4].Value = stopWatch_md5.Elapsed.TotalMilliseconds + "
MS";
DGV.Rows[i].Cells[5].Value = "";
}

private void RataButton_Click(object sender, EventArgs e)


{
if (RR == true) return;
double rrmd5 = 0, rrsha = 0;
int tmd5 = 0, tsha = 0;
//Rata-rata MD5
for (int r = 0; r < DGV.RowCount; r++)
{
if (DGV.Rows[r].Cells[4].Value.ToString() != "")
{
rrmd5 +=
double.Parse(DGV.Rows[r].Cells[4].Value.ToString().Replace("MS", ""));
tmd5++;
}
}
if(rrmd5 !=0)
{
rrmd5 = rrmd5 / tmd5;
}

//Rata-rata SHA256
for (int r = 0; r < DGV.RowCount; r++)
{
if (DGV.Rows[r].Cells[5].Value.ToString() != "")
{
rrsha +=
double.Parse(DGV.Rows[r].Cells[5].Value.ToString().Replace("MS", ""));
tsha++;
}
}
if (rrsha != 0)
{
rrsha = rrsha / tsha;
}

DGV.Rows.Add();
int i = DGV.Rows.Count - 1;
DGV.Rows[i].Cells[0].Value = "";
DGV.Rows[i].Cells[1].Value = "";
DGV.Rows[i].Cells[2].Value = "";
DGV.Rows[i].Cells[3].Value = "Rata-rata";
if (rrmd5 != 0)
{
DGV.Rows[i].Cells[4].Value = rrmd5.ToString() + " MS";
}
if (rrsha != 0)
{
DGV.Rows[i].Cells[5].Value = rrsha.ToString() + " MS";

Universitas Sumatera Utara


A6

}
RR = true;
SHA256Button.Enabled = false;
MD5Button.Enabled = false;
}

private void SaveButton_Click(object sender, EventArgs e)


{
ExportToExcel();
}

private void Proses_SHA256()


{
hasil_sha256 = SHA256.computeSHA256(File.ReadAllText(textBox1.Text));
textBox2.Text = hasil_sha256;

DGV.Rows.Add();
int i = DGV.Rows.Count - 1;
DGV.Rows[i].Cells[0].Value = i + 1;
DGV.Rows[i].Cells[1].Value = openFileDialog1.SafeFileName;
DGV.Rows[i].Cells[2].Value = new FileInfo(openFileDialog1.FileName).Length
+ " bytes";
DGV.Rows[i].Cells[3].Value = textBox2.Text;
DGV.Rows[i].Cells[4].Value = "";
DGV.Rows[i].Cells[5].Value = stopWatch_sha256.Elapsed.TotalMilliseconds +
" MS";
}

private void UserHsh_Load(object sender, EventArgs e)


{

private void ExportToExcel()


{
// Creating a Excel object.
Microsoft.Office.Interop.Excel._Application excel = new
Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel._Workbook workbook =
excel.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

try
{

worksheet = workbook.ActiveSheet;

worksheet.Name = "ExportedFromDatGrid";

int cellRowIndex = 2;
int cellColumnIndex = 1;

worksheet.Cells[1, 1] = DGV.Columns[0].HeaderText;
worksheet.Cells[1, 2] = DGV.Columns[1].HeaderText;
worksheet.Cells[1, 3] = DGV.Columns[2].HeaderText;
worksheet.Cells[1, 4] = DGV.Columns[3].HeaderText;
worksheet.Cells[1, 5] = DGV.Columns[4].HeaderText;
worksheet.Cells[1, 6] = DGV.Columns[5].HeaderText;
//Loop through each row and read value from each column.
for (int i = 0; i < DGV.Rows.Count; i++)
{

Universitas Sumatera Utara


A7

for (int j = 0; j < DGV.Columns.Count; j++)


{
worksheet.Cells[cellRowIndex, cellColumnIndex] =
DGV.Rows[i].Cells[j].Value.ToString();
cellColumnIndex++;
}
cellColumnIndex = 1;
cellRowIndex++;
}

//Getting the location and file name of the excel to save from user.
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx";
saveDialog.FilterIndex = 1;

if (saveDialog.ShowDialog() == DialogResult.OK)
{
workbook.SaveAs(saveDialog.FileName);
}
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
excel.Quit();
workbook = null;
excel = null;
}

}
}

4. UserProfil.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
public partial class UserProfil : UserControl
{
private static UserProfil _instance;

public static UserProfil Instance


{
get
{
if (_instance == null)
_instance = new UserProfil();
return _instance;

}
}

Universitas Sumatera Utara


A8

public UserProfil()
{
InitializeComponent();
}

private void UserProfil_Load(object sender, EventArgs e)


}
}

5. MD5.cs

using System;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
class MD5
{
private static int INIT_A;
private static int INIT_B;
private static int INIT_C;
private static int INIT_D;
private static int[] SHIFT_AMTS = { 7, 12, 17, 22, 5, 9, 14, 20, 4, 11, 16,
23, 6, 10, 15, 21 };
private static int[] TABLE_T = new int[64];
private static void buat_tabel()
{
//pembuatan tabel
unchecked
{
for (int i = 0; i < 64; i++)
{
TABLE_T[i] = (int)(long)((1L << 32) * Math.Abs(Math.Sin(i + 1)));
}
}
}

public static byte[] computeMD5(byte[] message)


{
unchecked
{
buat_tabel();
INIT_A = 0x67452301;
INIT_B = (int)0xEFCDAB89L;
INIT_C = (int)0x98BADCFEL;
INIT_D = 0x10325476;
//perhitungan jumlah blok dan panjang pesan
int messageLenBytes = message.Length;
int numBlocks = (int)((uint)(messageLenBytes + 8) >> 6) + 1;
int totalLen = numBlocks << 6;
byte[] paddingBytes = new byte[totalLen - messageLenBytes];

//padding 0x80
paddingBytes[0] = (byte)0x80;

long messageLenBits = (long)messageLenBytes << 3;

//proses memasukkan panjang pesan asli

Universitas Sumatera Utara


A9

for (int i = 0; i < 8; i++)


{
paddingBytes[paddingBytes.Length - 8 + i] = (byte)messageLenBits;
messageLenBits = (int)((uint)messageLenBits >> 8);
//Debug.WriteLine(paddingBytes[i]);
}

int a = INIT_A;
int b = INIT_B;
int c = INIT_C;
int d = INIT_D;
int[] buffer = new int[16];
for (int i = 0; i < numBlocks; i++)
{
int index = i << 6;
for (int j = 0; j < 64; j++, index++)
buffer[(int)((uint)j >> 2)] = ((int)((index < messageLenBytes)
? message[index]
: paddingBytes[index - messageLenBytes]) << 24) |
(int)((uint)buffer[(int)((uint)j >> 2)]
>> 8);
int originalA = a;
int originalB = b;
int originalC = c;
int originalD = d;
for (int j = 0; j < 64; j++)
{
int div16 = (int)((uint)j >> 4);
int f = 0;
int bufferIndex = j;
switch (div16)
{
case 0:
f = (b & c) | (~b & d);
//Log.d("computeMD5", "f = " +
Integer.toHexString(f));
break;
case 1:
f = (b & d) | (c & ~d);
bufferIndex = (bufferIndex * 5 + 1) & 0x0F;
break;
case 2:
f = b ^ c ^ d;
bufferIndex = (bufferIndex * 3 + 5) & 0x0F;
break;
case 3:
f = c ^ (b | ~d);
bufferIndex = (bufferIndex * 7) & 0x0F;
break;
}
int temp = RotateLeft(a + f + buffer[bufferIndex] +
TABLE_T[j], SHIFT_AMTS[(div16 << 2) | (j & 3)]);

a = d;
d = c;
c = b;
b = b + temp;
}

a += originalA;
b += originalB;

Universitas Sumatera Utara


A10

c += originalC;
d += originalD;
}

//ini proses litle endian


byte[] md5 = new byte[16];
int count = 0;
for (int i = 0; i < 4; i++)
{
int n = (i == 0) ? a : ((i == 1) ? b : ((i == 2) ? c : d));
for (int j = 0; j < 4; j++)
{
md5[count++] = (byte)n;
n = (int)((uint)n >> 8);
}
}
return md5;
}
}

public static string ByteArrayToHexString(byte[] Bytes)


{
StringBuilder Result = new StringBuilder(Bytes.Length * 2);
string HexAlphabet = "0123456789ABCDEF";

foreach (byte B in Bytes)


{
Result.Append(HexAlphabet[(int)(B >> 4)]);
Result.Append(HexAlphabet[(int)(B & 0xF)]);
}

return Result.ToString();
}

static int RotateLeft(int value, int shift)


{
unchecked
{
uint uvalue = (uint)value;
uint uresult = (uvalue << shift) | (uvalue >> 32 - shift);
return (int)uresult;
}
}
}

5. SHA256.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication2
{
class SHA256
{

Universitas Sumatera Utara


A11

static void DBL_INT_ADD(ref uint a, ref uint b, uint c)


{
if (a > 0xffffffff - c) ++b; a += c;
}

static uint ROTLEFT(uint a, byte b)


{
return ((a << b) | (a >> (32 - b)));
}

static uint ROTRIGHT(uint a, byte b)


{
return (((a) >> (b)) | ((a) << (32 - (b))));
}

static uint CH(uint x, uint y, uint z)


{
return (((x) & (y)) ^ (~(x) & (z)));
}

static uint MAJ(uint x, uint y, uint z)


{
return (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)));
}

static uint EP0(uint x)


{
return (ROTRIGHT(x, 2) ^ ROTRIGHT(x, 13) ^ ROTRIGHT(x, 22));
}

static uint EP1(uint x)


{
return (ROTRIGHT(x, 6) ^ ROTRIGHT(x, 11) ^ ROTRIGHT(x, 25));
}

static uint SIG0(uint x)


{
return (ROTRIGHT(x, 7) ^ ROTRIGHT(x, 18) ^ ((x) >> 3));
}

static uint SIG1(uint x)


{
return (ROTRIGHT(x, 17) ^ ROTRIGHT(x, 19) ^ ((x) >> 10));
}

struct SHA256_CTX
{
public byte[] data;
public uint datalen;
public uint[] bitlen;
public uint[] state;
}

static uint[] k = {

0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed
5,

0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf17
4,

Universitas Sumatera Utara


A12

0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988d
a,

0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x1429296
7,

0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c8
5,

0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa07
0,

0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff
3,

0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f
2
};

static void SHA256Transform(ref SHA256_CTX ctx, byte[] data)


{
uint a, b, c, d, e, f, g, h, i, j, t1, t2;
uint[] m = new uint[64];

for (i = 0, j = 0; i < 16; ++i, j += 4)


m[i] = (uint)((data[j] << 24) | (data[j + 1] << 16) | (data[j + 2] <<
8) | (data[j + 3]));

for (; i < 64; ++i)


m[i] = SIG1(m[i - 2]) + m[i - 7] + SIG0(m[i - 15]) + m[i - 16];

a = ctx.state[0];
b = ctx.state[1];
c = ctx.state[2];
d = ctx.state[3];
e = ctx.state[4];
f = ctx.state[5];
g = ctx.state[6];
h = ctx.state[7];

for (i = 0; i < 64; ++i)


{
t1 = h + EP1(e) + CH(e, f, g) + k[i] + m[i];
t2 = EP0(a) + MAJ(a, b, c);
h = g;
g = f;
f = e;
e = d + t1;
d = c;
c = b;
b = a;
a = t1 + t2;
}

ctx.state[0] += a;
ctx.state[1] += b;
ctx.state[2] += c;
ctx.state[3] += d;
ctx.state[4] += e;
ctx.state[5] += f;

Universitas Sumatera Utara


A13

ctx.state[6] += g;
ctx.state[7] += h;
}

static void SHA256Init(ref SHA256_CTX ctx)


{
ctx.datalen = 0;
ctx.bitlen[0] = 0;
ctx.bitlen[1] = 0;
ctx.state[0] = 0x6a09e667;
ctx.state[1] = 0xbb67ae85;
ctx.state[2] = 0x3c6ef372;
ctx.state[3] = 0xa54ff53a;
ctx.state[4] = 0x510e527f;
ctx.state[5] = 0x9b05688c;
ctx.state[6] = 0x1f83d9ab;
ctx.state[7] = 0x5be0cd19;
}

static void SHA256Update(ref SHA256_CTX ctx, byte[] data, uint len)


{
for (uint i = 0; i < len; ++i)
{
ctx.data[ctx.datalen] = data[i];
ctx.datalen++;

if (ctx.datalen == 64)
{
SHA256Transform(ref ctx, ctx.data);
DBL_INT_ADD(ref ctx.bitlen[0], ref ctx.bitlen[1], 512);
ctx.datalen = 0;
}
}
}

static void SHA256Final(ref SHA256_CTX ctx, byte[] hash)


{
uint i = ctx.datalen;

if (ctx.datalen < 56)


{
ctx.data[i++] = 0x80;

while (i < 56)


ctx.data[i++] = 0x00;
}
else
{
ctx.data[i++] = 0x80;

while (i < 64)


ctx.data[i++] = 0x00;

SHA256Transform(ref ctx, ctx.data);


}

DBL_INT_ADD(ref ctx.bitlen[0], ref ctx.bitlen[1], ctx.datalen * 8);


ctx.data[63] = (byte)(ctx.bitlen[0]);
ctx.data[62] = (byte)(ctx.bitlen[0] >> 8);
ctx.data[61] = (byte)(ctx.bitlen[0] >> 16);
ctx.data[60] = (byte)(ctx.bitlen[0] >> 24);

Universitas Sumatera Utara


A14

ctx.data[59] = (byte)(ctx.bitlen[1]);
ctx.data[58] = (byte)(ctx.bitlen[1] >> 8);
ctx.data[57] = (byte)(ctx.bitlen[1] >> 16);
ctx.data[56] = (byte)(ctx.bitlen[1] >> 24);
SHA256Transform(ref ctx, ctx.data);

for (i = 0; i < 4; ++i)


{
hash[i] = (byte)(((ctx.state[0]) >> (int)(24 - i * 8)) & 0x000000ff);
hash[i + 4] = (byte)(((ctx.state[1]) >> (int)(24 - i * 8)) &
0x000000ff);
hash[i + 8] = (byte)(((ctx.state[2]) >> (int)(24 - i * 8)) &
0x000000ff);
hash[i + 12] = (byte)((ctx.state[3] >> (int)(24 - i * 8)) &
0x000000ff);
hash[i + 16] = (byte)((ctx.state[4] >> (int)(24 - i * 8)) &
0x000000ff);
hash[i + 20] = (byte)((ctx.state[5] >> (int)(24 - i * 8)) &
0x000000ff);
hash[i + 24] = (byte)((ctx.state[6] >> (int)(24 - i * 8)) &
0x000000ff);
hash[i + 28] = (byte)((ctx.state[7] >> (int)(24 - i * 8)) &
0x000000ff);
}
}

public static string computeSHA256(string data)


{
SHA256_CTX ctx = new SHA256_CTX();
ctx.data = new byte[64];
ctx.bitlen = new uint[2];
ctx.state = new uint[8];

byte[] hash = new byte[32];


string hashStr = string.Empty;

SHA256Init(ref ctx);
SHA256Update(ref ctx, Encoding.Default.GetBytes(data), (uint)data.Length);
SHA256Final(ref ctx, hash);

for (int i = 0; i < 32; i++)


{
hashStr += string.Format("{0:X2}", hash[i]);
}

return hashStr;
}
}
}

Universitas Sumatera Utara


B1

Curriculum Vitae
Ardi Betesda Clinta Ginting
Mobile: +6285275472092
E-Mail: realardi@gmail.com

I. Personal Identification
Full Name : Ardi Betesda Clinta Ginting
Nick Name : Ardi
Place / Date of Birth : Kabanjahe/ December, 10th 1994
Sex : Male
Marital Status : Single
Nationality : Indonesian
Former Address : Jl. Djamin Ginting, Komplek Tropis, Puskesmas Tropis
Kabanjahe, North Sumatera, Indonesia 22111
Telephone : +6285275472092
Residential Address : Jl. Djamin Ginting KM 8,5, Jl. Bendungan, Gg. Bendungan 3,
Kec. Medan Baru, Medan, North Sumatera, Indonesia 20155
Motto : Life is Christ

II. Formal Educations


Graduate Study Program of Computing Science. Faculty of Computing Science and Information
Technology. University of Sumatera Utara. Medan. 2012 - 2017
SMA Negeri 1 Kabanjahe. Kabanjahe. 2009-2012
SMP Negeri 1 Kabanjahe. Kabanjahe. 2006-2009
SD Methodist Kabanjahe. Kabanjahe. 2000-2006
TK Methodist Kabanjahe. Kabanjahe. 1999-2000

III. Informal Education


Sedi English Course. Kabanjahe. 2010-2012.

Universitas Sumatera Utara


B2

IV. Achievements
1st Rank Class in twelve Science 2. SMA Negeri 1 Kabanjahe. 2011.
Nomination of the Most Outstanding Student. IMILKOM USU. 2013.

V. Working Experience
Internship in Citra Kreasi Latena, Medan. 2014
Leader Of Small Group. UKM KMK(Unit Kegiatan Mahasiswa Kebaktian Mahasiswa Kristen).
USU. Medan 2014-now

VI. Project Undertaken


- Information System for employee of Citra Kreasi Latena(2014)

VII. Trainings & Workshop


Base Course for Teacher of School Sunday KAKR Klasis Kabanjahe.2011
Intermediate Course for Teacher of School Sunday KAKR Klasis Kabanjahe.2012
Training Base Organization Imilkom USU.2013
Workshop PKM Fasilkom-TI. 2014

VIII. Seminars
Smart Library Seminar : “TREN DATA EVDO: KULIK LEBIH JAUH LAGI TEKNOLOGI
REV B”. University of Sumatera Sumatera. 2012
Motivation Seminar : “What will you be?”. University of Sumatera Utara. 2013
GELITIK Seminar. University of Sumatera Sumatera. 2014

IX. Organizational Experiences


Chief of Class Twelve science 2. SMA Negeri 1 Kabanjahe. 2011-2012

Universitas Sumatera Utara


B3

Staff of talent and interest section of KMKI(Komunitas Mahasiswa Kristen Ilmu


Komputer).2013-2014
Staff of equipment commission of Faculty Mathematics and Science. UKM KMK(Unit
Kegiatan Mahasiswa Kebaktian Mahasiswa Kristen). USU. Medan 2014
Coordinator of equipment commission of Faculty Mathematics and Science. UKM KMK(Unit
Kegiatan Mahasiswa Kebaktian Mahasiswa Kristen). USU. Medan 2015
Coordinator of Faculty Mathematics and Science. UKM KMK(Unit Kegiatan Mahasiswa
Kebaktian Mahasiswa Kristen). USU. Medan 2016
Regeneration Team for Board of Faculty Mathematics and Science. UKM KMK(Unit Kegiatan
Mahasiswa Kebaktian Mahasiswa Kristen). USU. Medan 2016-2017
Regeneration Team for Board of UKM KMK USU. UKM KMK(Unit Kegiatan Mahasiswa
Kebaktian Mahasiswa Kristen). USU. Medan 2017-2018

X. Committee Experiences
Passover celebration of KAKR GBKP Runggun Ketaren Klasis Kabanjahe. Treasurer. 2010
Christmas celebration of KAKR GBKP Runggun Ketaren Klasis Kabanjahe. Chairman of
Committee. 2010
Christmas celebration of KAKR GBKP Runggun Ketaren Klasis Kabanjahe. Chairman of
Committee. 2011
Smart Library Seminar: “TREN DATA EVDO: KULIK LEBIH JAUH LAGI TEKNOLOGI
REV B”. Staff of Equipment. University of Sumatera Sumatera. 2012
Eleventh Anniversary of Computer Science. Staff of Security. University of Sumatera Sumatera.
2012
Christmas celebration of Computer Science: ”Optimize Our Performance”. Staff of Equipment
and Place. 2012
Passover celebration of Faculty of Computer Science and Information Technology: “0 to 1”.
Staff of Donation. 2013
Sport and Art Events (PORSENI IMILKOM 2013):”Let’s show off our skill”. Staff of
Equipment and Place. University of Sumatera Utara. 2013

Universitas Sumatera Utara


B4

Welcoming Celebration of New Student’s Study Program of Computing Science (PMB S1 Ilmu
Komputer 2013). Staff of Equipment and Place. University of Sumatera Utara. 2013
Retreat KMKI 2013:”Life Start Here”. Staff of Equipment and Place. University of Sumatera
Utara. 2013
Christmas celebration of Computer Science: ”Patch Our Heart”. Vice Chairman of Committee.
2013
Sport and Art Events (PORSENI IMILKOM 2014):”Let’s show off our skill”. Chief of
Equipment and Place. University of Sumatera Utara. 2014

This curriculum vitae is prepared in valid data by my good intention to be used by any
parties needed.
Sincerely yours,
Ardi Betesda Clinta Ginting

Universitas Sumatera Utara

Anda mungkin juga menyukai