Ahmad Rivaldi
163112706440023
UNIVERSITAS NASIONAL
2018
PENDAHULUAN
2
PEMBAHASAN
Pengenalan Algoritma
Algoritma atau dapat diartikan sebagai susunan/langkah/urutan yang
logis dilakukan untuk memecahkan suatu masalah dan mendapatkan hasil yang
diinginkan. Algoritma tidak hanya dikaitkan dengan dunia komputer melainkan
tindakan dan kegiatan yang kita lakukan sehari-hari dalam menyelesaikan
masalah. Algoritma berbeda dengan Logaritma yang merupakan fungsi
Matematika. Contoh Algoritma dalam kehidupan sehari-hari,
- Siapkan alat dan bahan dalam pembuatan nasi goring, misalkan nasi,
bumbu, alat untuk memasak, telur, dan lainnya
- Nyalakan api dalam keadaan sedang, panaskan wajan dan masukkan
minyak goreng secukupnya
- Masukkan telur dan bumbu nasi goreng ke dalam wajan
- Masukkan nasi ke dalam wajan
- Aduk secara merata sampai nasi goreng benar-benar matang
- Matikan api dan hidangkan nasi goreng ke atas piring
- Nasi Goreng siap dinikmati
3
Algoritma brute force memecahkan masalah dengan sangat sederhana,
langsung dan dengan cara yang jelas (obvious way). Algoritma yang secara jelas
langsung ke pusat permasalahan. Algoritma ini biasanya tidak memerlukan teori
khusus untuk mengimplementasikannya. Algoritma ini sering juga disebut
Algoritma sapu jagad karena hampir semua persoalan pemrograman bisa
diselesaikan dengan algoritma ini.
Algoritma Brute Force sering disebut Algoritma tidak cerdas karena tidak
memerlukan pemikiran secara kompleks, hanya dengan beberapa baris semua
permasalahan dapat dipecahkan dengan mudahnya.
String
String dalam pemrograman komputer adalah sebuah deret
simbol/karakter. String digunakan sebagai tipe data pada pemrograman
komputer. Tipe data string adalah tipe data yang digunakan untuk menyimpan
barisan karakter dengan indeks terurut. Contoh : ‘AKU’ adalah kumpulan dari tiga
karakter dengan ‘A’ pada indeks 0, ‘K’ pada indeks 1, dan ‘U’ pada indeks 2.
Umumnya indeks dimulai dari angka 0. Banyak sekali algoritma dalam
pengolahan String, misalkan penghitungan jumlah karakter pada String (strlen
pada bahasa C dengan menggunakan library string.h), penyalinan String (strcpy
pada library string.h), dan berbagai pemrosesan String lainnya.
4
Pseudo Code Untuk String dalam bahasa C
#include <stdio.h>
int main()
{
char string[100];
string = "Hello world";
return 0;
}
5
Pattern Matching Sederhana :
#include <stdio.h>
int main()
{
//String
char kata[11];
kata = "ihaveadream";
Char e a d
Indeks 0 1 2
Algoritma Brute Force Pattern Matching (dalam bahasa C) :
int i;
int indeks;
for(i=0;i<kataLength-cariLength+1;i++)
{
int j=0;
while(j<cariLength && kata[i+j] == cari[j])
{
j++;
if(j >= cariLength)
6
{
indeks = i;
//posisi pattern ditemukan = i
}
}
}
i h a v e a d r e a m Panjang String = 11
Panjang Pattern = 3
e a d
Jumlah perulangan = Panjang String –
e a d
Panjang Pattern (ditambah 1 jika indeks
e a d dimulai dari 0)
e a d
e a d Algoritma ini menyelesaikan masalah
dengan mencoba kemungkinan dari
e a d
awal hingga akhir secara terurut.
e a d
e a d
e a d
#include <stdio.h>
#include <string.h>
int main()
{
//String
char kata[100];
7
scanf("%s",&kata);
for(i=0;i<kataLength-cariLength+1;i++)
{
int j=0;
while(j<cariLength && kata[i+j] == cari[j])
{
j++;
if(j >= cariLength)
{
indeks = i;
//posisi pattern ditemukan = i
}
}
}
//Akhir Brute Force Pattern Matching
printf("%d",indeks);
return 0;
}
8
Run Program dari Pseudo Code diatas :
Masukkan :
ihaveadream
ead
Keluaran :
4
Contoh Run Program brute.exe
9
Implementasi pada Pattern Matching Kompleks (brute force attack
password generating)
Cara kerja yang dilakukan oleh Brute Force Attack Mengadaptasi Cara
kerja dasar Algoritma Brute Force yaitu dengan tidak cerdasnya mencoba satu
persatu kombinasi karakter dengan cara rekursif dari 1 sampai tak terhingga atau
batas yang ditentukan.
Password = zcore ,5 karakter. Max pencarian dengan 62 karakter = 625 = 916132832 kombinasi
z c o r e Panjang Password = 5
0-z Uji Panjang = 1 Diulang sampai 62 karakter (a-z, A-Z, 0-9)
10
Kelemahan Brute Force Attack adalah waktu yang dibutuhkan relatif
sangat lama. Untuk Password 1 karakter menggunakan 62 Karakter (26 Huruf
kecil, 26 Huruf Besar, dan 10 angka) terdapat 62 kali looping dari 0 hingga z.
Untuk Password 2 Karakter menggunakan 62 x 62 kombinasi karakter dari 00
hingga zz. Itupun belum termasuk karakter khusus seperti ! (tanda seru), (/), garis
miring, dan karakter lainnya hingga menambah waktu pemrosesan. Didapat x n
dimana x adalah jumlah karakter yang di support oleh program dan n adalah
jumlah panjang password yang dicari. Waktu pemrosesan pada program
bergantung pada memori komputer yang digunakan dan panjang password yang
dicari.
11