Transkrip Rekaman Skenario Kriminalisasi KPK
Saat ini sedang hangat-hangatnya televisi menyiarkan berita tentang adanya skenario kriminalisasi beberapa pimpinan KPK. Dua pimpinan Komisi Pemberantasan Korupsi non aktif Bibit Samad Rianto dan Chandra M Hamzah ditetapkan sebagai tersangka oleh Kepolisian RI dalam perkara dugaan penyalahgunaan wewenang. Banyak pihak meragukan kasus ini, bahkan tak sedikit yang mengganggap terseretnya kedua wakil ketua KPK bidang penindakan itu adalah rekayasa semata untuk menggembosi keberadaan KPK.
Belakangan, kuasa hukum Bibit-Chandra, Ahmad Rivai mengaku memiliki bukti rekaman rekayasa kasus KPK. Bibit pun sempat menuturkan bukti tersebut sudah ditangan Ketua KPK sementara Tumpak Hatorangan Panggabean.
Rekaman tersebut diduga berisikan percakapan antara Anggodo Widjojo dengan Wisnu Subroto (mantan Jaksa Agung Muda Bidang Intelijen) serta beberapa orang lainnya. Namun, nama Abdul Hakim Ritonga (Wakil Jaksa Agung) kerap disebut. Dalam percakapan terkuak rencana untuk menyeret pimpinan KPK dalam perkara suap dari bos PT Masaro Radiokom Anggoro Widjojo.
Berikut cuplikan transkrip rekaman rekayasa kasus KPK yang diperoleh sejumlah wartawan.
Wisnu ke Anggodo (23 juli 2009)
"Bagaimana perkembangannya,"
"ya, masih tetap nambahin BAP, ini saya masih di Mabes"
"pokoknya berkasnya ini kelihatannya dimasukkan ke tempatnya R (nama
salah satu pucuk pimpinan kejaksaan), minggu ini, terus balik ke sini,
terus action"
"RI-I belum"
"Udah-udah, aku masih mencocokkan tanggal"
Anggoro ke Anggodo (24 Juli 2009)
"Yo pokoke saiki Berita Acarane kene dikompliti"
"wes gandeng karo Ritonga kok dek'e"
"janji ambek Ritonga, final gelar iku sama kejaksaan lagi, trakhir senen"
"...sambil ngenteni surate RI-1 thok nek?"
"lha kon takok'o Truno, tho""yo mengko bengi, ngko bengi dek'e"
Hadi Atmoko ke Anggodo (27 Juli 2009)
"..dan ini kronologinya saya sudah di Bang Far semua,"
"sebetulnya ada satu saksi lagi si Edi Sumarsono Pak, yang Antasari
itu Pak"Sama pembuktian lagi waktu Ari kesana, ada pertemuan rapat
dengan KPK Pak"
"Ada pertemuan di nya di ruang rapat Chandra"
Anggodo ke Kosasih (28 Juli 2009)
"Kos, itu kronologis jangan Lu kasih dial oh Kos"
"Jangan dikasihkan soalnya Edi sudah berseberangan"
"Cuman Lu harus ngomong sama dia:'terpaksa Lu harus jadi saksi',
karena Chandra Lu yang perintah, kalao nggak, nggak bisa nggandeng"
Anggodo ke seorang wanita (28 Juli 2009)
"Besok kon tak ente..., ngomong ke Ritonga, Edi Sumarsono itu bajingan
bener, sebenarnya dia mengingkari semua"
"besok penting ngomong. Edi ngingkari Pak, padahal Antasari bawa Chandra"
Anggodo ke Par (penyidik) (29 Juli 2009)
"Kelihatannya kronologis saya yang benar"
"Iya sudah benar kok, saya lihat, di surat lalulintas. Saya sudah
ngecek ke Imigrasi, sudah benar kok"
Anggodo ke Wisnu (29 Juli 2009)
"Terus gimana Pak, mengenai Edi gimana Pak"
"Edi udah tak omongken Irwan apa. Ini bukan sono yang salah, kita-kita
ini yang jadi salah"
"Iya, padahal ia saksi kunci Chandra"
"Maksud saya Pak, dia kenalnya dari Bapak dan Pak Wisnu, gak apa-apa kan Pak"
"Nggak apa-apa, kalau dari Wisnu nggak apa-apalah"
"Kalau kita ngikutin, kan berarti saya ngaku Irwan kan. Cuma kalau dia
nutupin dia yang perintah...perintahnya Antasari suruh ngaku ke Chandra
itu ga ngaku. Terus siapa yang ngaku"
"ya you sama ARI"
"Nggak bisa dong Pak, wong nggak ada konteksnya dengan Chandra"
"Nggak,'saya dengar dari Edi"
"Iya dari Edi, emang perintahnya dia Pak. Lha Edinya nggak mau ngaku,
gitu Pak,'dia nggak kenal Chandra, saya ndak nyuruh ngasihin duit,'
gimana bos?"
"Ya ndak apa-apa"
Anggodo ke Wisnu (30 Juli 2009)
"Pak tadi jadi ketemu?"
"Udah, akhirnya Kosasih yang tau persis teknis di sana. Suruh
dikompromikan disana, Kosasih juga sudah ketemu Pak Sus, dia juga
ketemu Pak Sus lagi si Edi. Yang penting kalo dia tidak mengaku
susah kita."
"Yang saya penting, dia menyatakan waktu itu supaya membayar Chandra
atas perintah Antasari"
"Nah itu"
"Wong waktu di malam si itu dipeluk anu tak nanya, kok situ bisa
ngomong. Si Ari dipeluk karena teriak-teriak, dipeluk sama Chandra itu
kejadian"
"Bohong, nggak ada kejadian, kamuflase saja."
"Nggak ada memang. Jadi dia cuma dikasih tau disuruh Ari gitu. Dia
curiga duite dimakan Ari."
"Bukan sial Ari-nya Pak, dia cerita pada waktu ke KPK dia yang minta
Ari, kalau ditanya saya bilang Edi ada disitu, diwalik sama-sama doa,
Ari yang suruh ngomong dia ngomong dia ada. Kalau itu saya ga jadi
masalah pak, itu saya suruh..."
"Pokoknya yang kunci-kuncinya itu saya sudah ngomong sama Kosasih,
kalo tidak ada lagi...nyampe...ya berarti ya enggak bisa kasus ini gitu"
"Yang penting buat saya Pak si Ari ini, dia ngurusi Ade Rahardja
segala. Ujung-ujungnya dia dapet perintah nyerahkan ke Chandra itu
siapa Pak? Kan nggak nyambung pak"
"Bukan Pak, dia memerintahkan nyerahken ke Chandra yang Bapak juga
tahu kan, karena kalo ga ada yang merintah Chandra Pak, nggak nyambung
uang itu lho'
"Memang keseluruhan tetap keterangan itu, kalau edi nggak ngaku ya
biarin yang penting Ari sama Anggodo kan cerita itu"
"kan saksinya kurang satu"
"Saksinya akan sudah 2, Ari sama Anggodo"
"Saya bukan saksi, saya kan penyandang dana kan"
"kenapa dana itu dikeluarkan, karena saya disuruh si Edi kan, sama
saja kan, ha ha ha..."
"suruh dia ngaku lah Pak, kalao temenan kaya gini ya percuma pak punya temen."
"Susno dari awal berangkat sama saya ke Singapura. Itu dia sudah tahu
Toni itu saya, sudah ngerti Pak. Yang penting dia nggak usah
masalahin. Itu kan urusan penyidik"Yang penting dia ngakuin itu bahwa
dia yang merintahkan untuk nyogok Chandra, itu aja"
"Sekarang begini, dia perintahkan kan udah Ari denger, you denger kan.
Sudah selesai..."
"Tapi, kalo dia nggak Bantu kita Pak, terjerumus. Dia dibenci sama Susno"
"Biarin aja, tapi nyatanya dia ngomong dipanggil Susno"
Anggodo dengan seorang wanita (6 Agustus 2009)
"iyo tapi ditakono tanda tangani teke sopo, iya toh gak iso jawab.
Modele bajingan kabeh, Yang. Chandra iku yo, wis blesno ae Yang, ojo
ragu-ragu..."
Anggodo dengan ...(7 Agustus 2009)
"menurut bosnya Trunojoyo, kalau bisa besok sudah keluar"
"Male bilang tidka bagus, karena pemberitaannya hari minggu, orang
sedang libur. Bagusnya Senin pagi, langsung main"
"Truno minta TV dikontak hari ini, supaya besok counternya dari Anggoro"
Anggodo dengan ...(8 Agustus 2009)
"Nggak usah ngomong sama penyidik. Cuma abang saja tahu bahwa BAP nya
Ari tuh seperti itu. Jadi dalam posisi dia BAP, masih sesuai apa yang
dia anu. Jangan sampai dia berpikir, kita bohong"
"Siap Bang"
"Sama harus dikaitkan ini, seperti sindikat Edi, Ari sama KPK satu
sindikat mau memeras kita, ya Bang"
"iya"
"Intinya si Ari sudah di BAP seperti kronologis. Kenapa kok kita
laporkan Ari itu. Kenapa sudah laporan begini kok dia melarikan diri.
Gitu loh. Dan si Edi itu di BAP itu nggak ngaku. Kit anggak usah
ngomong. Pokoknya si edy nggak tahu kita.
"Bang, nanti maksudnya di BAP kita nantinya, inti bahwa pengakuan itu Bang"
"iya"
"sekarang jangan dibuka dulu. Maksudnya status si Ari itu, kita merasa
Ari sama Edy dan ini tuh, ini kita diperas KPK sudah kita bayar.
Kenapa jadi masalah begini. Gitu loh Bos"
"Iya"
"menurut pengakuan Ari, dia sudah membayar seluruh dana teresbut
kepada orang-orang KPK, nggak tahu siapa"
"Betul"
Alex dengan Anggodo (10 Agustus 2009)
"Secara keseluruhan apik. Anggoro nggak lari"
"Kenceng dia ngomonge"
"Kenceng. Tak rekam banter mau"
"Y owes. Terus poin-poinnya tersasar, kan?"
"Sudah"
"Tidak lari. Ciamik dee njelasnoe"
"Ini ada suatu rekayasa, nampak dari pemanggilan jadi saksi terus
tersangka. Tenggat waktu 9 bulan. Sudah kondusif. Moro-moro karena ada
testimony, muncul pemanggilan sebagai tersangka. Secara keseluruhan
oke."
"Mengenai cekal, salah sasaran"
"Ya dalam kasus Yusuf Faisal, kok dicekal Anggoro. Itu bagaimana.
Penyitaan dan penggeledahan juga salah sasaran. Dalam kasus Yusuf
Faisal, kok yang digeledah Masaro. Pokoknya intinya sudah masuk
semua."
Alex dengan Anggodo dan Robert (10 Agustus 2009)
"Iya memang dicuplikan. Nggak banyak, tapi intinya kita berkelit,
kalau ini bukan penyuapan. Karena di awal itu, beritanya dari Antasari
dulu, testimoni itu. Jadi dia cuplik dari Antasari, terus baru
disambung ke kita, jadi dijelaskan sama Bonaran, kalo itu bukan
penyuapan. Dan permasalahannya, kedatangan Antasari menemui Anggoro
itu juga membawa konsekwensi Antasari bisa dipermasalahkan"
"Ngomong gimana? Pengacara dari Anggoro press rilis hari ini."
Kapolri Jenderal (Pol) Bambang Hendarso Danuri pernah membantah soal adanya rekayasa dibalik status tersangka Bibit-Chandra. "Di sini kita memperlihatkan dalam proses ini betul-betul transparan. Kalau katanya ada rekayasa, orang tersangkanya semua ada di luar. Yang direkayasa apa? Nggak ada," ujarnya di jakarta, Jumat, 23 Oktober 2009.
Sama halnya dengan Kepolisian, secara terpisah Kejagung ikut membantah kabar rekayasa kriminalisasi pimpinan KPK. "Apakah itu rekayasa atau tidak bukan urusan kami, kita akan buktikan di persidangan. Yang terpenting apakah perbuatan itu memenuhi unsur yang disangkakan atau tidak oleh penyidik," jelas Jaksa Agung Muda Pidana Khusus (Jampidsus) Marwan Effendy.
Polisi telah menetapkan Bibit dan Chandra sebagai tersangka. Keduanya dijerat dengan Pasal 23 Undang-Undang Pemberantasan Tindak Pidana Korupsi Junto Pasal 421 KUHP atas dugaan penyalahgunaan kewenangan dalam melakukan pencekalan terhadap buron Anggoro dan pencabutan cekal Djoko S Tjandra dalam kasus berbeda.
Belakangan polisi mengendus dugaan penerimaan suap oleh dua tersangka dari bos PT Masaro Radiokom Anggoro Widjojo. Suap itu ditujukan untuk mengentikan penanganan perkara suap Anggoro agar KPK menghentikan penanganan perkara suap proyek SKRT di Departemen Kehutanan.
Kebenaran transkrip rekaman di atas belum masih perlu pembuktian, karena KPK belum mempublikasikannya.Info lebih lengkapnya bisa dilihat di situs okezone
Sumber:
http://news.okezone.com/read/2009/10/26/339/269271/berikut-transkrip-rekaman-skenario-kriminalisasi-kpk
dalam kita hidup , tiap tiap detik ada perubahan- perubahan pada diri kita baik fisik , linkungan sekitar , cara kita memandang sebuah masalah , cara pandang kita terhadap sesuatu, dan cara kita berperlaku ,
Sunday, November 1, 2009
ALGORITMA SORT
ALGORITMA SORT
• Pengurutan data sangat penting untuk data yang bertipe data numerik ataupun karakter.
• Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun)
• Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu.
Contoh:
Data Acak : 5 6 8 1 3 25 10
Ascending : 1 3 5 6 8 10 25
Descending : 25 10 8 6 5 3 1
DEKLARASI ARRAY UNTUK SORTING
Deklarasikan:
int data[100];
int n; //untuk jumlah data
Fungsi untuk Tukar 2 Buah Data:
public tukar(int *a,int *b){
int t=*a;
*a=*b;
*b=t;
}
METODE PENGURUTAN DATA
• Pengurutan berdasarkan perbandingan (comparison-based sorting)
o Bubble Sort, Exchange Sort
• Pengurutan berdasarkan prioritas (priority queue sorting method)
o Selection Sort, Heap Sort
• Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method)
o Insertion Sort, Tree Sort
• Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method)
o Quick Sort, Merge Sort
• Pengurutan berkurang menurun (diminishing increment sort method)
o Shell Sort
BUBBLE SORT
• Metode sorting termudah akan tetapi merupakan metode yang paling lambat.
• Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda.
• Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.
• Pengurutan Ascending :Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar.
• Pengurutan Descending: Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar.
• Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya.
• Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya.
• Kapan berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.
Procedure Buble Sort
//Versi 1
public bubble_sort(){
for(int i=1;i=i;j--){
if(data[j]data[j+1])
tukar(&data[j],&data[j+1]); //descending
}
}
}
EXCHANGE SORT
• Sangat mirip dengan Bubble Sort
• Banyak yang mengatakan Bubble Sort sama dengan Exchange Sort
• Pebedaan : dalam hal bagaimana membandingkan antar elemen elemennya.
• Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu menjadi elemen pusat (pivot).
• Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen sebelum/sesudahnya itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.
Procedur e Exchange Sort
public exchange_sort()
{
for (int i=0; i= 0; i--)
siftDown(numbers, i, array_size);
for (i = array_size-1; i >= 1; i--)
{
temp = numbers[0];
numbers[0] = numbers[i];
numbers[i] = temp;
new siftDown(numbers, 0, i-1);
}
}
private siftDown(int numbers[], int root, int bottom)
{
int done, maxChild, temp;
done = 0;
while ((root*2 <= bottom) && (!done))
{
if (root*2 == bottom)
maxChild = root * 2;
else if (numbers[root * 2] > numbers[root * 2 + 1])
maxChild = root * 2;
else
maxChild = root * 2 + 1;
if (numbers[root] < numbers[maxChild])
{
temp = numbers[root];
numbers[root] = numbers[maxChild];
numbers[maxChild] = temp;
root = maxChild;
}
else
done = 1;
}
}
}
SELECTION SORT
• Merupakan kombinasi antara sorting dan searching
• Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array.
• Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]).
• Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
Procedure Selection Sort
public selection_sort(){
for(int i=0;itemp && j>=0){
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
}
MERGE SORT
• Data yang akan diurutkan dibagi menjadi 2 bagian, dan di tempatkan di 2 array yang berbeda.
• Merge Sort membutuhkan 3 array, 1 array untuk menempatkan hasilnya, dan sisanya merupakan data yang akan di urutkan.
• Ke-2 array tersebut di urutkan kemudian disimpan pada masing-masing array, lalu digabungkan pada array yang pertama.
• Misal : Data a, dipecah dalam array ke-2 dan array ke-3, kemudian array ke-2 dan array ke-3 melakukan proses pengurutan. Setelah mendapatkan hasil, hasil pengurutan dari array ke-2 dan ke-3digabungkan dalam array ke-1.
Procedure Merge Sort
class Merge {
public mergeSort(int numbers[], int temp[], int array_size)
{
new m_sort(numbers, temp, 0, array_size - 1);
}
private m_sort(int numbers[], int temp[], int left, int right)
{
int mid;
if (right > left)
{
mid = (right + left) / 2;
new m_sort(numbers, temp, left, mid);
new m_sort(numbers, temp, mid+1, right);
new merge(numbers, temp, left, mid+1, right);
}
}
private merge(int numbers[], int temp[], int left, int mid, int right)
{
int i, left_end, num_elements, tmp_pos;
left_end = mid - 1;
tmp_pos = left;
num_elements = right - left + 1;
while ((left <= left_end) && (mid <= right))
{
if (numbers[left] <= numbers[mid])
{
temp[tmp_pos] = numbers[left];
tmp_pos = tmp_pos + 1;
left = left +1;
}
else
{
temp[tmp_pos] = numbers[mid];
tmp_pos = tmp_pos + 1;
mid = mid + 1;
}
}
while (left <= left_end)
{
temp[tmp_pos] = numbers[left];
left = left + 1;
tmp_pos = tmp_pos + 1;
}
while (mid <= right)
{
temp[tmp_pos] = numbers[mid];
mid = mid + 1;
tmp_pos = tmp_pos + 1;
}
for (i=0; i <= num_elements; i++)
{
numbers[right] = temp[right];
right = right - 1;
}
}
}
QUICK SORT
• Merupakan metode yang sangat cepat dengan teori algoritma yang mudah, tetapi dalam penulisan programnya sangat sulit.
• Merupakan kombinasi antara metode Exchange Sort dan metode Merge Sort.
• Ada empat langkah dalam melakukan metode ini, yaitu:
o If (n<=1), maka kembali ke awal atau mengehentikan proses.
o Ambil satu elemen dari array sebagai Pusat (Pivot) seperti halnya di metode Exchange Sort.
o Array dipecah menjadi dua bagian, pecahan array pertama terdiri dari elemen yang lebih besar dari Pivot, sedangkan pecahan array ke-2 memiliki elemen yang lebih kecil dari Pivot.
o Kemudian, kedua pecahan tersebut melakukan proses pengurutan.
Procedure Quick Sort
Class Quick {
public quickSort(int numbers[], int array_size)
{
new q_sort(numbers, 0, array_size - 1);
}
private q_sort(int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right)
{
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
new q_sort(numbers, left, pivot-1);
if (right > pivot)
new q_sort(numbers, pivot+1, right);
}
}
SHELL SORT
• Merupakan metode O(n2) yang sangat efisien dan komplek.
• Diciptakan oleh Donald Shell tahun 1959.
• Merupakan metode berupa Increment Sort, dan lebih dikenal dengan “comb sort” dalam dunia pemrograman yang belum sempurna.
• Konsepnya hampir sama dengan metode Insertion Sort.
Procedure Shell Sort
class Shell_Sort {
public shellSort(int numbers[], int array_size)
{
int i, j, increment, temp;
increment = 3;
while (increment > 0)
{
for (i=0; i < array_size; i++)
{
j = i;
temp = numbers[i];
while ((j >= increment) && (numbers[j-increment] > temp))
{
numbers[j] = numbers[j - increment];
j = j - increment;
}
numbers[j] = temp;
}
if (increment/2 != 0)
increment = increment/2;
else if (increment == 1)
increment = 0;
else
increment = 1;
}
}
}
• Pengurutan data sangat penting untuk data yang bertipe data numerik ataupun karakter.
• Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun)
• Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu.
Contoh:
Data Acak : 5 6 8 1 3 25 10
Ascending : 1 3 5 6 8 10 25
Descending : 25 10 8 6 5 3 1
DEKLARASI ARRAY UNTUK SORTING
Deklarasikan:
int data[100];
int n; //untuk jumlah data
Fungsi untuk Tukar 2 Buah Data:
public tukar(int *a,int *b){
int t=*a;
*a=*b;
*b=t;
}
METODE PENGURUTAN DATA
• Pengurutan berdasarkan perbandingan (comparison-based sorting)
o Bubble Sort, Exchange Sort
• Pengurutan berdasarkan prioritas (priority queue sorting method)
o Selection Sort, Heap Sort
• Pengurutan berdasarkan penyisipan dan penjagaan terurut (insert and keep sorted method)
o Insertion Sort, Tree Sort
• Pengurutan berdasarkan pembagian dan penguasaan (devide and conquer method)
o Quick Sort, Merge Sort
• Pengurutan berkurang menurun (diminishing increment sort method)
o Shell Sort
BUBBLE SORT
• Metode sorting termudah akan tetapi merupakan metode yang paling lambat.
• Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda.
• Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.
• Pengurutan Ascending :Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar.
• Pengurutan Descending: Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar.
• Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya.
• Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya.
• Kapan berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.
Procedure Buble Sort
//Versi 1
public bubble_sort(){
for(int i=1;i=i;j--){
if(data[j]data[j+1])
tukar(&data[j],&data[j+1]); //descending
}
}
}
EXCHANGE SORT
• Sangat mirip dengan Bubble Sort
• Banyak yang mengatakan Bubble Sort sama dengan Exchange Sort
• Pebedaan : dalam hal bagaimana membandingkan antar elemen elemennya.
• Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu menjadi elemen pusat (pivot).
• Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen sebelum/sesudahnya itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.
Procedur e Exchange Sort
public exchange_sort()
{
for (int i=0; i= 0; i--)
siftDown(numbers, i, array_size);
for (i = array_size-1; i >= 1; i--)
{
temp = numbers[0];
numbers[0] = numbers[i];
numbers[i] = temp;
new siftDown(numbers, 0, i-1);
}
}
private siftDown(int numbers[], int root, int bottom)
{
int done, maxChild, temp;
done = 0;
while ((root*2 <= bottom) && (!done))
{
if (root*2 == bottom)
maxChild = root * 2;
else if (numbers[root * 2] > numbers[root * 2 + 1])
maxChild = root * 2;
else
maxChild = root * 2 + 1;
if (numbers[root] < numbers[maxChild])
{
temp = numbers[root];
numbers[root] = numbers[maxChild];
numbers[maxChild] = temp;
root = maxChild;
}
else
done = 1;
}
}
}
SELECTION SORT
• Merupakan kombinasi antara sorting dan searching
• Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array.
• Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]).
• Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
Procedure Selection Sort
public selection_sort(){
for(int i=0;itemp && j>=0){
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}
}
MERGE SORT
• Data yang akan diurutkan dibagi menjadi 2 bagian, dan di tempatkan di 2 array yang berbeda.
• Merge Sort membutuhkan 3 array, 1 array untuk menempatkan hasilnya, dan sisanya merupakan data yang akan di urutkan.
• Ke-2 array tersebut di urutkan kemudian disimpan pada masing-masing array, lalu digabungkan pada array yang pertama.
• Misal : Data a, dipecah dalam array ke-2 dan array ke-3, kemudian array ke-2 dan array ke-3 melakukan proses pengurutan. Setelah mendapatkan hasil, hasil pengurutan dari array ke-2 dan ke-3digabungkan dalam array ke-1.
Procedure Merge Sort
class Merge {
public mergeSort(int numbers[], int temp[], int array_size)
{
new m_sort(numbers, temp, 0, array_size - 1);
}
private m_sort(int numbers[], int temp[], int left, int right)
{
int mid;
if (right > left)
{
mid = (right + left) / 2;
new m_sort(numbers, temp, left, mid);
new m_sort(numbers, temp, mid+1, right);
new merge(numbers, temp, left, mid+1, right);
}
}
private merge(int numbers[], int temp[], int left, int mid, int right)
{
int i, left_end, num_elements, tmp_pos;
left_end = mid - 1;
tmp_pos = left;
num_elements = right - left + 1;
while ((left <= left_end) && (mid <= right))
{
if (numbers[left] <= numbers[mid])
{
temp[tmp_pos] = numbers[left];
tmp_pos = tmp_pos + 1;
left = left +1;
}
else
{
temp[tmp_pos] = numbers[mid];
tmp_pos = tmp_pos + 1;
mid = mid + 1;
}
}
while (left <= left_end)
{
temp[tmp_pos] = numbers[left];
left = left + 1;
tmp_pos = tmp_pos + 1;
}
while (mid <= right)
{
temp[tmp_pos] = numbers[mid];
mid = mid + 1;
tmp_pos = tmp_pos + 1;
}
for (i=0; i <= num_elements; i++)
{
numbers[right] = temp[right];
right = right - 1;
}
}
}
QUICK SORT
• Merupakan metode yang sangat cepat dengan teori algoritma yang mudah, tetapi dalam penulisan programnya sangat sulit.
• Merupakan kombinasi antara metode Exchange Sort dan metode Merge Sort.
• Ada empat langkah dalam melakukan metode ini, yaitu:
o If (n<=1), maka kembali ke awal atau mengehentikan proses.
o Ambil satu elemen dari array sebagai Pusat (Pivot) seperti halnya di metode Exchange Sort.
o Array dipecah menjadi dua bagian, pecahan array pertama terdiri dari elemen yang lebih besar dari Pivot, sedangkan pecahan array ke-2 memiliki elemen yang lebih kecil dari Pivot.
o Kemudian, kedua pecahan tersebut melakukan proses pengurutan.
Procedure Quick Sort
Class Quick {
public quickSort(int numbers[], int array_size)
{
new q_sort(numbers, 0, array_size - 1);
}
private q_sort(int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold = left;
r_hold = right;
pivot = numbers[left];
while (left < right)
{
while ((numbers[right] >= pivot) && (left < right))
right--;
if (left != right)
{
numbers[left] = numbers[right];
left++;
}
while ((numbers[left] <= pivot) && (left < right))
left++;
if (left != right)
{
numbers[right] = numbers[left];
right--;
}
}
numbers[left] = pivot;
pivot = left;
left = l_hold;
right = r_hold;
if (left < pivot)
new q_sort(numbers, left, pivot-1);
if (right > pivot)
new q_sort(numbers, pivot+1, right);
}
}
SHELL SORT
• Merupakan metode O(n2) yang sangat efisien dan komplek.
• Diciptakan oleh Donald Shell tahun 1959.
• Merupakan metode berupa Increment Sort, dan lebih dikenal dengan “comb sort” dalam dunia pemrograman yang belum sempurna.
• Konsepnya hampir sama dengan metode Insertion Sort.
Procedure Shell Sort
class Shell_Sort {
public shellSort(int numbers[], int array_size)
{
int i, j, increment, temp;
increment = 3;
while (increment > 0)
{
for (i=0; i < array_size; i++)
{
j = i;
temp = numbers[i];
while ((j >= increment) && (numbers[j-increment] > temp))
{
numbers[j] = numbers[j - increment];
j = j - increment;
}
numbers[j] = temp;
}
if (increment/2 != 0)
increment = increment/2;
else if (increment == 1)
increment = 0;
else
increment = 1;
}
}
}
CeilBleu we are in the same roof as learntera.com metode enkripsi simetris RC4
Ketika internet menjadi salah satu media komunikasi yang banyak digunakan orang, sebagian orang kemudian berpikir untuk menjadikanya sebagai media untuk transaksi komersial semacan internet banking, e-comerce, dan lain sebagainya. Kebutuhan akan hal itu kemudian didukung dengan lahirnya berbagai metode ataupun algoritma – algoritma enkripsi untuk pengamanan data misalnya MD2,MD4,MD5,RC4,RC5, dan lain sebagainya. Pembakuan penulisan pada kriptografi dapat ditulis dalam bahasa matematika. Fungsi-fungsi yang mendasar dalam kriptografi adalah enkripsi dan dekripsi. Enkripsi adalah proses mengubah suatu pesan asli (plaintext) menjadi suatu pesan dalam bahasa sandi (ciphertext).
C = E (M)
dimana
M = pesan asli
E = proses enkripsi
C = pesan dalam bahasa sandi (untuk ringkasnya disebut sandi)
Sedangkan dekripsi adalah proses mengubah pesan dalam suatu bahasa sandi menjadi pesan asli kembali.
M = D (C)
D = proses dekripsi
Dalam setiap transaksi di internet , idealnya, setiap data yang ditransmisikan harusnya terjamin :
* Integritas data
Jaminan integritas data sangat penting, sehingga data yang di kirimkan akan sama persis dengan data yang diterima, tanpa mengalami perubahan apapun pada selama ditransmisikan.
* Kerahasiaan data
Jaminan kerahasiaan data juga penting karena dengan demikian tidak ada pihak lain yang bisa membaca data yang ada selama data tersebut ditransmisikan.
* Otentikasi akse data
Mekanisme otentikasi akses data menjamin bahwa data ditransmisikan oleh pihak yang benar dengan tujuan transimisi yang benar pula.
Teknik kriptografi data untuk enkripsi ada dua macam yaitu:
* Kriptografi simetrik
Dengan model kriptografi ini, data di enkripsi dan didekripsi dengan kunci rahasia yang sama.
* Kriptografi asimetrik
Dengan model kriptografi ini, data dienkripsi dan didekripsi dengan kunci rahasia yang berbeda.pasangan kunci untuk enkripsi dan dekripsi dikenal dengan private key dan public key.
enkripsi-rc4.jpg
Gbr-1. Metode enkripsi simetrik (1) dan asimetrik (2)
Aplikasi kriptografi simetrik RC4 menggunakan Java
RC4 merupakan merupakan salah satu jenis stream cipher, yaitu memproses unit atau input data pada satu saat. Dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus menunggu sejumlah input data tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip. Metode enkripsi RC4 sangat cepat kurang lebih 10 kali lebih cepat dari DES.
Untuk melihat bagaimana metode enlripsi RC4 bekerja maka dalam tulisan ini dibuat aplikasi dengan menggunakan java, adapun source program tersebut adalah sebagai berikut :
Nama file : RC4Engine.java
—————-mulai—————-
class KeyParameter{
private byte[] key;
public KeyParameter(byte[] key){
this(key,0,key.length);
}
public KeyParameter(byte[] key,int keyoff,int keyLen){
this.key = new byte[keyLen];
System.arraycopy(key,keyoff,this.key,0,keyLen);
}
public byte[] getKey(){
return key;
}
}
class EncRC4Engine{
private final static int STATE_LENGTH = 256;
private byte[] engineState = null,workingKey = null;
private int x=0,y=0;
private static final char[] kDigits = {‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’a',’b',’c',’d',’e',’f'};
EncRC4Engine(){}//constructor
public void init(boolean forEncryption,KeyParameter params){
if(params instanceof KeyParameter){
workingKey = ((KeyParameter)params).getKey();
setKey(workingKey);
return;
}
throw new IllegalArgumentException(“invalid parameter passed to RC4 init”+params.getClass().getName());
}
public void processBytes(byte[] in,int inOff,int len,byte[] out,int outOff){
if((inOff+len)>in.length){
throw new RuntimeException(“output buffer too short”);
}
if((outOff+len)>out.length){
throw new RuntimeException(“out put buffer too short”);
}
for (int i = 0 ; i < len ; i++){
x = (x+1) & 0xff;
y = ( engineState[x] + y ) & 0xff;
//swap
byte tmp = engineState[x];
engineState[x] = engineState[y];
engineState[y] = tmp;
//xor
out[i + outOff] = (byte)(in[i+inOff] ^ engineState[(engineState[x] + engineState[y]) & 0xff]);
}
}
public String bytesToHex(byte[] raw){
int length = raw.length;
char[]hex = new char[length*2];
for (int i=0;i
int value = (raw[i]+256) % 256;
int highIndex = value >> 4;
int lowIndex = value & 0×0f;
hex[i*2+0] = kDigits[highIndex];
hex[i*2+1] = kDigits[lowIndex];
}
return (new String(hex)).toString();
}
public void reset(){
setKey(workingKey);
}
//private implementation
private void setKey(byte[] keyBytes){
workingKey = keyBytes;
x=0;y=0;
if (engineState == null){
engineState = new byte [STATE_LENGTH];
}
//reset the state of the engine
for(int i = 0;i < STATE_LENGTH;i++){
engineState[i]=(byte)i;
}
int i1=0;int i2=0;
for(int i=0;i < STATE_LENGTH;i++){
i2 = ((keyBytes[i1] & 0xff) + engineState[i]+ i2) & 0xff;
//do the byte swap inline
byte tmp = engineState[i];
engineState[i]=engineState[i2];
engineState[i2]=tmp;
i1=(i1+1) % keyBytes.length;
}
}
}
————-selesai—————-
nama file : TesRC4Engine.java
————-mulai—————-
import java.io.*;
class tesRC4Engine {
public static void main (String args[]){
try{
String myKey1, myKey2, text2Encrypt, text2Decrypt;
BufferedReader b;
byte[] ciphertext1;
byte[] ciphertext2;
EncRC4Engine s1 = new EncRC4Engine();
EncRC4Engine s2 = new EncRC4Engine();
b = new BufferedReader(new InputStreamReader(System.in));
System.out.print(“masukan data untuk encryption : “);
text2Encrypt = b.readLine();
System.out.print(“masukan kunci encryption : “);
myKey1 = b.readLine();
s1.init(true,new KeyParameter(myKey1.getBytes()));
ciphertext1 = new byte[text2Encrypt.length()];
s1.processBytes(text2Encrypt.getBytes(),0,text2Encrypt.length(),ciphertext1,0);
System.out.print(“hasil encrypt dari \”" + text2Encrypt);
System.out.println(“\” adalah ” + s1.bytesToHex(ciphertext1));
text2Decrypt = s1.bytesToHex(ciphertext1);
System.out.print(“masukan kunci untuk decrypt : “);
myKey2 = b.readLine();
s2.init(false,new KeyParameter(myKey2.getBytes()));
ciphertext2 = new byte[ciphertext1.length];
s2.processBytes(ciphertext1, 0, ciphertext1.length,ciphertext2,0);
System.out.print(“hasil decrypt dari \”" + text2Decrypt);
System.out.println(“\” adalah ” + (new String(ciphertext2)).toString());
}catch(IOException e){
e.printStackTrace();
}
}
}
———–selesai———–
Kompilasi dan hasil eksekusi dari source program diatas afalah sebagai berikut:
C:\>java TesRC4Engine
masukan data untuk encryption : keamanan jaringan komputer
masukan kunci encryption : kjk
hasil encrypt dari “keamanan jaringan komputer” adalah 5ec874ee3cd7cd0b38dad37c7b684c0ccc589c2f1e689287a746
masukan kunci untuk decrypt : kjk
hasil decrypt dari “5ec874ee3cd7cd0b38dad37c7b684c0ccc589c2f1e689287a746″ adalah keamanan jaringan komputer
C:\>java TesRC4Engine
masukan data untuk encryption : keamanan jaringan komputer
masukan kunci encryption : h
hasil encrypt dari “keamanan jaringan komputer” adalah ca28c9e03687b13fd9f0273fb8c5d31eba8955371c82c3985647
masukan kunci untuk decrypt : kjk
hasil decrypt dari “ca28c9e03687b13fd9f0273fb8c5d31eba8955371c82c3985647″ adalah ÿ…Ück>ZÁ@•1ªÃøsñ¢woš$k”s
Dari hasil diatas dapat diambil suatu analisi bahwa :
* RC4 merupakan algoritma enkripsi simetris
Hal ini terbukti bahwa untuk melakukan enkripsi dan dekripsi diperlukan suatu kunci/key yang sama. Jika key untuk enkripsi dan key untuk dekripsi berbeda, hasil dekripsi tidak akan menghasilkan hasil yang sama dengan plain text yang sebenarnya. Hal ini dapat dilihat pada eksekusi program yang kedua.
* Hasil enkripsi bergantung dari key
Hasil enkripsi dari plain text yang sama akan berbeda jika digunakan key atau kunci yang berbeda pula. Dengan kata lain hasil enkripsi merupakan fungsi dari plain text dan key.
Keamanan metode enkripsi RC4
Perbandingan kemanan metode enkripsi DES dengan RC4 menurut penulisnya pada http://www.geocities.com/amwibowo/resource/komparasi/komparasi.html adalah sebagai berikut :
Panjang kunci DES
Jaminan waktu untuk menemukan kunci
40-bit
0,4 detik
56-bit
7 jam
64-bit
74 jam 40 menit
128-bit
157.129.203.952.300.000 tahun
Tabel 1.1. Serangan brute-force pada DES
Panjang kunci RC4
Jaminan waktu untuk menemukan kunci
40-bit
15 hari
56-bit
2.691,49 tahun
64-bit
689.021,57 tahun
128-bit
12.710.204.652.610.000.000.000.000 tahun
Tabel 1.2. Serangan brute-force pada RC4
Dari tabel diatas dapat dilihat bahwa metode enkripsi dengan menggunkan RC4 masih lebih aman dibanding dengan metode enkripsi dengan DES.
C = E (M)
dimana
M = pesan asli
E = proses enkripsi
C = pesan dalam bahasa sandi (untuk ringkasnya disebut sandi)
Sedangkan dekripsi adalah proses mengubah pesan dalam suatu bahasa sandi menjadi pesan asli kembali.
M = D (C)
D = proses dekripsi
Dalam setiap transaksi di internet , idealnya, setiap data yang ditransmisikan harusnya terjamin :
* Integritas data
Jaminan integritas data sangat penting, sehingga data yang di kirimkan akan sama persis dengan data yang diterima, tanpa mengalami perubahan apapun pada selama ditransmisikan.
* Kerahasiaan data
Jaminan kerahasiaan data juga penting karena dengan demikian tidak ada pihak lain yang bisa membaca data yang ada selama data tersebut ditransmisikan.
* Otentikasi akse data
Mekanisme otentikasi akses data menjamin bahwa data ditransmisikan oleh pihak yang benar dengan tujuan transimisi yang benar pula.
Teknik kriptografi data untuk enkripsi ada dua macam yaitu:
* Kriptografi simetrik
Dengan model kriptografi ini, data di enkripsi dan didekripsi dengan kunci rahasia yang sama.
* Kriptografi asimetrik
Dengan model kriptografi ini, data dienkripsi dan didekripsi dengan kunci rahasia yang berbeda.pasangan kunci untuk enkripsi dan dekripsi dikenal dengan private key dan public key.
enkripsi-rc4.jpg
Gbr-1. Metode enkripsi simetrik (1) dan asimetrik (2)
Aplikasi kriptografi simetrik RC4 menggunakan Java
RC4 merupakan merupakan salah satu jenis stream cipher, yaitu memproses unit atau input data pada satu saat. Dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus menunggu sejumlah input data tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip. Metode enkripsi RC4 sangat cepat kurang lebih 10 kali lebih cepat dari DES.
Untuk melihat bagaimana metode enlripsi RC4 bekerja maka dalam tulisan ini dibuat aplikasi dengan menggunakan java, adapun source program tersebut adalah sebagai berikut :
Nama file : RC4Engine.java
—————-mulai—————-
class KeyParameter{
private byte[] key;
public KeyParameter(byte[] key){
this(key,0,key.length);
}
public KeyParameter(byte[] key,int keyoff,int keyLen){
this.key = new byte[keyLen];
System.arraycopy(key,keyoff,this.key,0,keyLen);
}
public byte[] getKey(){
return key;
}
}
class EncRC4Engine{
private final static int STATE_LENGTH = 256;
private byte[] engineState = null,workingKey = null;
private int x=0,y=0;
private static final char[] kDigits = {‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’a',’b',’c',’d',’e',’f'};
EncRC4Engine(){}//constructor
public void init(boolean forEncryption,KeyParameter params){
if(params instanceof KeyParameter){
workingKey = ((KeyParameter)params).getKey();
setKey(workingKey);
return;
}
throw new IllegalArgumentException(“invalid parameter passed to RC4 init”+params.getClass().getName());
}
public void processBytes(byte[] in,int inOff,int len,byte[] out,int outOff){
if((inOff+len)>in.length){
throw new RuntimeException(“output buffer too short”);
}
if((outOff+len)>out.length){
throw new RuntimeException(“out put buffer too short”);
}
for (int i = 0 ; i < len ; i++){
x = (x+1) & 0xff;
y = ( engineState[x] + y ) & 0xff;
//swap
byte tmp = engineState[x];
engineState[x] = engineState[y];
engineState[y] = tmp;
//xor
out[i + outOff] = (byte)(in[i+inOff] ^ engineState[(engineState[x] + engineState[y]) & 0xff]);
}
}
public String bytesToHex(byte[] raw){
int length = raw.length;
char[]hex = new char[length*2];
for (int i=0;i
int value = (raw[i]+256) % 256;
int highIndex = value >> 4;
int lowIndex = value & 0×0f;
hex[i*2+0] = kDigits[highIndex];
hex[i*2+1] = kDigits[lowIndex];
}
return (new String(hex)).toString();
}
public void reset(){
setKey(workingKey);
}
//private implementation
private void setKey(byte[] keyBytes){
workingKey = keyBytes;
x=0;y=0;
if (engineState == null){
engineState = new byte [STATE_LENGTH];
}
//reset the state of the engine
for(int i = 0;i < STATE_LENGTH;i++){
engineState[i]=(byte)i;
}
int i1=0;int i2=0;
for(int i=0;i < STATE_LENGTH;i++){
i2 = ((keyBytes[i1] & 0xff) + engineState[i]+ i2) & 0xff;
//do the byte swap inline
byte tmp = engineState[i];
engineState[i]=engineState[i2];
engineState[i2]=tmp;
i1=(i1+1) % keyBytes.length;
}
}
}
————-selesai—————-
nama file : TesRC4Engine.java
————-mulai—————-
import java.io.*;
class tesRC4Engine {
public static void main (String args[]){
try{
String myKey1, myKey2, text2Encrypt, text2Decrypt;
BufferedReader b;
byte[] ciphertext1;
byte[] ciphertext2;
EncRC4Engine s1 = new EncRC4Engine();
EncRC4Engine s2 = new EncRC4Engine();
b = new BufferedReader(new InputStreamReader(System.in));
System.out.print(“masukan data untuk encryption : “);
text2Encrypt = b.readLine();
System.out.print(“masukan kunci encryption : “);
myKey1 = b.readLine();
s1.init(true,new KeyParameter(myKey1.getBytes()));
ciphertext1 = new byte[text2Encrypt.length()];
s1.processBytes(text2Encrypt.getBytes(),0,text2Encrypt.length(),ciphertext1,0);
System.out.print(“hasil encrypt dari \”" + text2Encrypt);
System.out.println(“\” adalah ” + s1.bytesToHex(ciphertext1));
text2Decrypt = s1.bytesToHex(ciphertext1);
System.out.print(“masukan kunci untuk decrypt : “);
myKey2 = b.readLine();
s2.init(false,new KeyParameter(myKey2.getBytes()));
ciphertext2 = new byte[ciphertext1.length];
s2.processBytes(ciphertext1, 0, ciphertext1.length,ciphertext2,0);
System.out.print(“hasil decrypt dari \”" + text2Decrypt);
System.out.println(“\” adalah ” + (new String(ciphertext2)).toString());
}catch(IOException e){
e.printStackTrace();
}
}
}
———–selesai———–
Kompilasi dan hasil eksekusi dari source program diatas afalah sebagai berikut:
C:\>java TesRC4Engine
masukan data untuk encryption : keamanan jaringan komputer
masukan kunci encryption : kjk
hasil encrypt dari “keamanan jaringan komputer” adalah 5ec874ee3cd7cd0b38dad37c7b684c0ccc589c2f1e689287a746
masukan kunci untuk decrypt : kjk
hasil decrypt dari “5ec874ee3cd7cd0b38dad37c7b684c0ccc589c2f1e689287a746″ adalah keamanan jaringan komputer
C:\>java TesRC4Engine
masukan data untuk encryption : keamanan jaringan komputer
masukan kunci encryption : h
hasil encrypt dari “keamanan jaringan komputer” adalah ca28c9e03687b13fd9f0273fb8c5d31eba8955371c82c3985647
masukan kunci untuk decrypt : kjk
hasil decrypt dari “ca28c9e03687b13fd9f0273fb8c5d31eba8955371c82c3985647″ adalah ÿ…Ück>ZÁ@•1ªÃøsñ¢woš$k”s
Dari hasil diatas dapat diambil suatu analisi bahwa :
* RC4 merupakan algoritma enkripsi simetris
Hal ini terbukti bahwa untuk melakukan enkripsi dan dekripsi diperlukan suatu kunci/key yang sama. Jika key untuk enkripsi dan key untuk dekripsi berbeda, hasil dekripsi tidak akan menghasilkan hasil yang sama dengan plain text yang sebenarnya. Hal ini dapat dilihat pada eksekusi program yang kedua.
* Hasil enkripsi bergantung dari key
Hasil enkripsi dari plain text yang sama akan berbeda jika digunakan key atau kunci yang berbeda pula. Dengan kata lain hasil enkripsi merupakan fungsi dari plain text dan key.
Keamanan metode enkripsi RC4
Perbandingan kemanan metode enkripsi DES dengan RC4 menurut penulisnya pada http://www.geocities.com/amwibowo/resource/komparasi/komparasi.html adalah sebagai berikut :
Panjang kunci DES
Jaminan waktu untuk menemukan kunci
40-bit
0,4 detik
56-bit
7 jam
64-bit
74 jam 40 menit
128-bit
157.129.203.952.300.000 tahun
Tabel 1.1. Serangan brute-force pada DES
Panjang kunci RC4
Jaminan waktu untuk menemukan kunci
40-bit
15 hari
56-bit
2.691,49 tahun
64-bit
689.021,57 tahun
128-bit
12.710.204.652.610.000.000.000.000 tahun
Tabel 1.2. Serangan brute-force pada RC4
Dari tabel diatas dapat dilihat bahwa metode enkripsi dengan menggunkan RC4 masih lebih aman dibanding dengan metode enkripsi dengan DES.
Subscribe to:
Posts (Atom)