Anda di halaman 1dari 16

VISUALISASI ALGORITMA RSA DENGAN MENGGUNAKAN

BAHASA PEMROGRAMAN JAVA

Meidina
50405878

udin_dee@student.gunadarma.ac.id

Program Studi Teknik Informatika


Universitas Gunadarma

Abstraksi

Dewasa ini sistem informasi semakin berkembang. Sebagai indikator dapat dilihat
kemajuan teknologi dalam pengiriman data yang semakin lama semakin berkembang
seiring dengan kebutuhan manusia dengan komunikasi data. Suatu data dapat
ditransmisikan dengan berbagai cara baik melalui sinyal di udara maupun dengan saluran
kabel. Penggunaan media transmisi ini memungkinkan pihak-pihak yang tidak
bertanggung jawab membaca bahkan mengubah isi data tersebut, oleh karena itu
diperlukan adanya penyandian data untuk mengamankan data yang ditransmisikan. Untuk
mengatasi hal tersebut diperlukan adanya sistem pengamanan terhadap data yang dikenal
sebgai ilmu kriptografi.

Semakin berkembangannya ilmu pengetahuan, dikembangkan pula algoritma


kriptografi. Salah satu algoritma yang cukup dikenal adalah algoritma RSA. RSA yang
menggunakan algoritma asimetrik mempunyai dua kunci yang berbeda, disebut
pasangan kunci (key pair) untuk proses enkripsi dan dekripsi.

Tingkat keamanan algoritma penyandian RSA sangat bergantung pada ukuran


kunci sandi tersebut, karena makin kecil ukuran kunci, maka makin besar juga
kemungkinan kombinasi kunci yang bisa dijebol dengan metode memeriksa
kombinasi satu persatu kunci atau lebih dikenal dengan istilah Brute Force Attack.
Bilangan prima yang dihasilkan dalam algoritma RSA mempengaruhi ukuran kunci
sandi. Jumlah bilangan prima yang dihasilkan pada aplikasi ini adalah 1000 buah
bilangan.

Kata Kunci : visualisasi, kriptografi, algoritma RSA, pemrograman Java.

PENDAHULUAN meningkat. Hal ini ditandai dengan


berkembang pesatnya teknologi yang
Dengan semakin berkembangnya terkait di dalamnya, yaitu teknologi dan
sistem informasi dan komunikasi, media transmisi. Tidak hanya melalui
kebutuhan manusia dalam melakukan kabel, data pun dapat juga dikirim
komunikasi data pun semakin melalui media non-kabel (wireless) yang
menggunakan udara sebagai media Pemilihan algoritma RSA dikarenakan
merambatnya sinyal. Lewat sinyal yang sistem penyandian algoritma ini
merambat melalui udara, data dapat memiliki mekanisme kerja yang cukup
dikirimkan dari satu tempat ke tempat sederhana dan mudah dimengerti namun
lain dengan mudah dan praktis. tetap kokoh dalam tugasnya
Namun, penggunaan media transmisi mengamankan data. Dengan adanya
dalam pengiriman data memiliki sebuah aplikasi yang dapat
permasalahan tersendiri yang perlu memvisualisasikan sekaligus
diperhatikan. Penggunaan media mensimulasikan algoritma RSA,
transmisi memungkinkan pihak-pihak diharapkan akan memudahkan mereka
yang tidak memiliki kepentingan melihat yang ingin mempelajarinya sehingga
bahkan mengubah isi data tersebut yang dapat menghilangkan anggapan sulitnya
tentu saja membahayakan integritas data, memahami algoritma kriptografi.
terutama data yang bersifat sangat
rahasia. Permasalahan ini pun meningkat LANDASAN TEORI
seiring dengan semakin banyaknya data
yang dikirimkan melalui media non- Pengertian Kriptografi
kabel. Dilihat dari karakteristiknya,
media ini adalah yang paling rentan Istilah kriptografi berasal dari dua kata
dengan pencurian data karena data dalam bahasa Yunani yaitu Crypto yang
dengan bebasnya merambat di udara berarti rahasia dan Grapho yang berarti
sehingga siapapun dapat dengan mudah menulis. Secara umum kriptografi dapat
melihat isi data tersebut. Oleh karena itu, diartikan sebagai ilmu dan seni
dibutuhkan suatu mekanisme yang dapat penyandian yang bertujuan untuk
mengacak data (enkripsi) sehingga data menjaga keamanan dan kerahasiaan
tidak mudah dilihat dan diubah oleh suatu pesan. Pada dasarnya, kriptografi
pihak yang tidak memiliki kepentingan. sudah dikenal sejak lama. Menurut
Lewat sebuah cabang ilmu catatan sejarah, kriptografi sudah
kriptologi, algoritma kriptografi digunakan oleh bangsa Mesir sejak 4000
berkembang sangat cepat dan tahun yang lalu oleh raja-raja Mesir pada
penggunaannya pun semakin luas dan saat perang untuk mengirimkan pesan
beragam sehingga menjadi menarik rahasia kepada panglima perangnya
untuk dipelajari. Namun, tidak banyak melalui kurir-kurinya. Orang yang
yang dapat menjelaskan secara rinci melakukan penyandian ini disebut
proses yang terjadi di dalamnya cryptographer, sedangkan orang yang
sehingga pemahaman tentang algoritma mendalami ilmu dan seni dalam
kriptografi tidak mendalam. Proses membuka atau memecahkan suatu
komputasi dan prosedur yang rumit algoritma kriptografi tanpa harus
membuat orang enggan mempelajari dan mengetahui kuncinya disebut
memahami algoritma kriptografi secara cryptanalysis.
menyeluruh.
Hal ini membuat penulis termotivasi Proses Kriptografi
untuk membuat sebuah program yang
dapat memvisualisasikan sekaligus Ada dua jenis proses yang akan dibahas
mensimulasikan proses yang terjadi pada dalam penulisan ini. Berikut penjelasan
sebuah algoritma kriptografi, yaitu RSA. dari dua jenis proses tersebut.
Proses Enkripsi rahasia untuk membuka informasi
yang telah dienkripsi.
Enkripsi adalah proses mengamankan 2. Integritas data, untuk menjaga
suatu informasi dengan membuat keaslian/keutuhan data, sistem harus
informasi tersebut tidak dapat dibaca memiliki kemampuan untuk
tanpa bantuan pengetahuan khusus. mendeteksi manipulasi data oleh
Pengetahuan yang mempelajari tentang pihak-pihak yang tidak berhak,
enkripsi adalah kriptografi. Enkripsi erat antara lain penyisipan, penghapusan,
kaitannya dengan dekripsi, untuk itulah dan pensubsitusian data lain kedalam
muncul istilah kriptanalisis. Kriptanalisis data yang sebenarnya.
adalah ilmu dan seni untuk memecahkan 3. Autentikasi, ini berhubungan dengan
informasi yang telah dienkripsi tanpa identifikasi / pengenalan, baik secara
mengetahui kunci yang digunakan. kesatuan sistem maupun informasi
Pelaku kriptanalisis disebut dengan itu sendiri. Dua pihak yang saling
kriptanalis. berkomunikasi harus saling
Proses enkripsi meliputi pengkonversian memperkenalkan diri. Informasi
plaintext yang diinput oleh user, lalu yang dikirimkan melalui kanal harus
dari hasil konversi tersebut akan diolah diautentikasi keaslian, isi datanya,
bersama cipherkey (kunci publik) yang waktu pengiriman, dan lain-lain.
didapat dari hasil random menjadi kode- 4. Non-repudiasi / Nirpenyangkalan,
kode melalui proses perhitungan. Kode- adalah usaha untuk mencegah
kode inilah yang disebut sebagai terjadinya penyangkalan terhadap
ciphertext (gabungan antara plaintext pengiriman / terciptanya suatu
dan cipherkey). Kode-kode inilah yang informasi oleh yang mengirimkan /
diharapkan dapat menyembunyikan membuat data.
informasi yang penting dan tidak boleh Terdapat beberapa cara untuk melakukan
dibaca oleh pihak yang tidak berwenang, enkripsi, yaitu:
hanya yang memegang kunci privat 1. Enkripsi dengan kunci simetris
(private key) lah yang memiliki (kunci rahasia), menggunakan
wewenang dalam membaca informasi sebuah kunci rahasia yang sama
tersebut (yang dapat melakukan proses (private key) untuk melakukan
dekripsi ciphertext). proses enkripsi dan dekripsinya.
Berikut adalah penggambaran proses Dimana kunci enkripsi tersebut
enkripsi berikut dekripsinya : dibuat oleh pihak yang mengirimkan
data, kemudian kunci tersebut
dikirimkan kepada pihak yang
menerima data tersebut untuk
melakukan dekripsi. Kelebihan dari
enkripsi ini adalah pada kecepatan
Gambar 2.1. Proses Enkripsi - Dekripsi proses datanya dan juga sangat baik
digunakan untuk mengamankan
Adapun tujuan dari enkripsi adalah enkripsi data berkecepatan tinggi.
sebagai berikut : 2. Enkripsi dengan kunci asimetris
1. Kerahasiaan, yaitu untuk menjaga isi (kunci publik), menggunakan dua
dari informasi dari siapapun kecuali buah kunci yang berbeda, satu untuk
yang memiliki otoritas atau kunci enkripsi dan yang lainnya untuk
dekripsi, dimana kunci untuk algoritma RSA terdiri dari 3 tahapan
enkripsi bersifat terbuka atau publik yaitu :
sedangkan untuk dekripsi bersifat
rahasia atau pribadi. Enkripsi jenis 1. Pembangkitan Kunci
ini memiliki kelebihan jumlah kunci Untuk membangkitkan kedua kunci,
sebanyak enkripsi simetris dan tidak dipilih dua buah bilangan prima yang
membutuhkan saluran khusus untuk sangat besar, p dan q. Untuk
pertukaran kuncinya tetapi memiliki mendapatkan keamanan yang
kekurangan pada masalah kecepatan maksimum, dipilih dua bilangan p dan q
proses enkripsi datanya. yang besar. Kemudian dihitung :
3. Enkripsi dengan fungsi HASH (Satu n = pq
Arah), sering juga disebut sebagai Kemudian dihitung :
fungsi hash kriptografis, yaitu fungsi φ = (p-1) (q-1)
yang secara efisien mengubah string Lalu dipilih kunci enkripsi e secara acak,
input dengan panjang berhingga sedemikian sehingga e dan (p-1)(q-1)
menjadi string output dengan relatif prima. Artinya e dan φ tidak
panjang tetap yang disebut nilai memiliki faktor persekutuan bersama.
hash. Fungsi ini bersifat satu arah Kemudian dengan algoritma Euclidean
sehingga inputan yang telah yang diperluas, dihitung kunci dekripsi
dienkripsi tidak dapat dibalikkan d, sedemikian sehingga :
atau didekripsikan. Contohnya ed = 1 mod (p-1)(q-1)
adalah penggunaan MD5 untuk atau
melindungi password. ed – 1 = k (p-1)(q-1)
di mana k merupakan konstanta integer.
Proses Dekripsi Perhatikan bahwa d dan n juga relatif
prima. Bilangan e dan n merupakan
Proses dekripsi merupakan kebalikan kunci publik, sedangkan d kunci privat.
dari proses enkripsi, yaitu proses dimana Dua bilangan prima p dan q tidak
ciphertext akan diubah kembali menjadi diperlukan lagi. Namun p dan q kadang
plaintext. Proses ini membutuhkan kunci diperlukan untuk mempercepat
privat yang cocok dengan cipherkey perhitungan dekripsi.
yang didapat pada proses enkripsi.
2. Proses Enkripsi
Algoritma RSA Untuk mengenkripsi pesan m, terlebih
dahulu pesan dibagi ke dalam blok-blok
Algoritma RSA merupakan salah satu numerik yang lebih kecil dari n (dengan
algoritma kriptografi kunci publik yang data biner, dipilih pangkat terbesar dari 2
saat ini masih populer digunakan. yang kurang dari n). Jadi jika p dan q
Algoritma RSA diperkenalkan pada bilangan prima 100 digit, maka n akan
tahun 1978 oleh tiga orang profesor MIT memiliki sekitar 200 buah digit dari
(Massachussets Institute of Technology) setiap blok pesan m, seharusnya kurang
yaitu Ron Rivest, Adi Shamir, dan dari 200 digit panjangnya. Pesan yang
Leonard Adleman. Nama RSA pun terenkripsi (c), akan tersusun dari blok-
diambil dari inisial penemunya yaitu blok (ci) yang hampir sama panjangnya.
Rivest, Shamir dan Adleman. Secara Rumus enkripsinya adalah :
garis besar, proses kriptografi pada ci = mie mod n
3. Proses Dekripsi gunakan, maka Java memiliki beberapa
Setelah menerima pesan yang sudah keunggulan :
terenkripsi maka penerima pesan akan 1. Sederhana
melakukan proses dekripsi pesan dengan 2. Berorientasi Objek
cara 3. Terdistribusi
mi = cid mod n 4. Aman
5. Netral Arsitektur
4. Simulasi 6. Portable
Simulasi adalah suatu prosedur 7. Interpreter
kuantitatif, yang menggambarkan sebuah 8. Powerful
sistem, dengan mengembangkan sebuah 9. Multithreading
model dari sistem tersebut dan 10. Dinamis
melakukan sederetan uji coba untuk
memperkirakan perilaku sistem pada NetBeans
kurun waktu tertentu.
NetBeans mengacu pada dua hal, yakni
Java platform untuk pengembangan aplikasi
desktop Java, dan sebuah Integrated
Java dikembangkan pertama kali oleh Development Environment (IDE) yang
James Gosling dari Sun Microsystems dibangun menggunakan platform
pada tahun 1990-an. Java pertama kali NetBeans. Platform NetBeans
dikembangkan untuk memenuhi memungkinkan aplikasi dibangun dari
kebutuhan akan sebuah bahasa komputer sekumpulan komponen perangkat lunak
yang ditulis satu kali dan dapat moduler yang disebut ‘modul’. Sebuah
dijalankan dibanyak sistem komputer modul adalah suatu arsip Java (Java
berbeda tanpa perubahan kode berarti. archive) yang memuat kelas-kelas Java
Kebanyakan bahasa komputer yang ada untuk berinteraksi dengan NetBeans
memiliki keterbatasan migrasi sistem Open API dan file manifestasi yang
yang berbeda. Java diciptakan sebagai mengidentifikasinya sebagai modul.
sebuah bahasa baru dengan Aplikasi yang dibangun dengan modul-
implementasi yang berbeda. Bahasa Java modul dapat dikembangkan dengan
merupakan bahasa berorientasi objek menambahkan modul-modul baru.
yang diturunkan dari C++ dengan Karena modul dapat dikembangkan
banyak penyempurnaan. Pada umumnya, secara independen, aplikasi berbasis
para pakar pemrograman berpendapat platform NetBeans dapat dengan mudah
bahwa bahasa Java memiliki konsep dikembangkan oleh pihak ketiga secara
yang konsisten dengan teori mudah dan powerful.
pemrograman objek dan aman untuk
digunakan.
PERANCANGAN DAN
Keunggulan Java IMPLEMENTASI
Java sebagai bahasa pemrograman yang
banyak disukai orang karena konsep Pada bab ini penulis akan
pemrogramannya yang konsisten dengan menjelaskan mengenai tahap-tahap pada
teori orientasi objek serta aman untuk di pembuatan aplikasi yang
memvisualisasikan algoritma RSA
dengan menggunakan bahasa 1. Pilih dua bilangan prima p dan q
pemrograman JAVA. Dalam secara acak dimana p≠q. Kedua
pembuatannya penulis melakukan bilangan ini idealnya harus besar
beberapa tahap. Tahapan-tahapan (minimal 100 digit).
tersebut adalah sebagai berikut. 2. Hitung N= p * q
3. Hitung φ(n) = (p-1)(q-1)
4. Pilih bilangan bulat (integer) antara
satu dan φ(1< e < φ) yang tidak
mempunyai faktor pembagi dari φ.
Langkah ini dapat dilakukan dengan
menggunakan algoritma Euclidean.
5. Hitung d hingga d e = 1 (mod φ).
Setelah melalui cara ini maka kita akan
mendapatkan kunci publik dan kunci
privat. Kunci publik terdiri dari dua
elemen yaitu :
1. N, merupakan modulus yang
digunakan
2. e, eksponen publik atau eksponen
enkripsi
dan kunci privat yang terdiri dari :
1. N, merupakan modulus yang
digunakan, sama seperti pada kunci
publik
2. d, eksponen pribadi atau eksponen
Gambar 3.1 Bagan Langkah Pembuatan dekripsi yang harus dijaga
Program Visualisasi Algoritma RSA kerahasiaannya.
Penentuan proses yang ingin
Analisis Kebutuhan Masukan ditampilkan pada program diantaranya
adalah sebagai berikut :
Di dalam aplikasi simulasi ini masukan
1. Input plainteks dari user
yang dapat diproses adalah plainteks 2. Proses konversi dari plainteks ke
yang dapat berupa huruf alfabet A-Z, a-
kode ASCII untuk tiap huruf dari
z, angka 0-9 serta karakter tambahan plainteks
seperti !@#$%^&*()[]{};’:”\|,.<>/?`~.
3. Proses pembangkitan dua buah
bilangan prima dari hasil random (p
Proses Visualisasi
dan q)
4. Hasil perkalian kedua bilangan prima
Dalam penentuan proses yang ingin
(p*q)
ditampilkan pada aplikasi simulasi ini
5. Proses penghitungan φ(n) = (p-1)(q-
diperlukan langkah-langkah dalam
1)
algoritma RSA agar memudahkan dalam
6. Proses pemilihan bilangan (integer)
menentukan proses yang harus
antara satu dan φ(1< e < φ) yang
ditampilkan. Tahap-tahap proses
tidak mempunyai faktor pembagi
enkripsi dalam algoritma RSA adalah
dari φ
sebagai berikut :
7. Hasil d hingga d e = 1 (mod φ).
8. Enkripsi dengan menggunakan komunikasi data. ASCII merupakan
e
persamaan ci = pi mod n. Dimana pi kode angka yang mewakili sebuah
merupakan blok plainteks, ci adalah karakter, karena komputer hanya dapat
cipherteks yang diperoleh dan e membaca angka-angka maka kode
adalah kunci enkripsi (kunci publik) ASCII bertugas merepresentasikan
Selanjutnya adalah tampilan untuk karakter tersebut seperti ‘a’ atau ‘@’
proses dekripsi yang dapat dilakukan begitu juga non-printed character.
langsung dengan persamaan pi = cid mod Gambar 3.2 menyajikan karakter yang
n, yang dalam hal ini d merupakan kunci memiliki kode ASCII dan juga
deksripsi (kunci privat). Maka aplikasi menyajikan 32 buah non-printed
akan menampilkan proses dan hasil character. Kode ASCII memiliki
perhitungan dari persamaan tersebut dan beberapa basis dalam merepresentasikan
akan menunjukkan hasil yang akurat. karakter, diantaranya dalam bilangan
desimal, heksadesimal, oktal dan html.
Algoritma Euclide

Algoritma ini digunakan untuk mencari


nilai pembagi persekutuan terbesar dari
dua bilangan bulat. Algoritma ini
didasarkan pada pernyataan berikut ini.
Diberikan bilangan bulat r0dan r1,
dengan r0 > r 1, kemudian dihitung
menggunakan algoritma pembagian:
r0 = q 1 r 1 + r 2 , 0 < r 2 < r 1
r 1 = q 2 r 2 + r 3 , 0 < r3 < r2
... Gambar 3.2 Tabel ASCII
r n-2 = q n -1 r n -1+ r n , 0 < r n < r n - 1
r n -1 = q n r n Gambar 3.3 adalah gambar yang
Dari pernyataan di atas, dapat menyajikan karakter tambahan yang bisa
ditunjukkan bahwa GCD(r0, r1) = direpresentasikan oleh kode ASCII.
GCD(r1, r2) = ... = GCD(r n-1, r n) =
GCD(r n,0) = r n.
Bukti lihat di (Buchmann, 2000)
Contoh :
Akan dihitung GCD(40,24).
Jawab:
40 = 1.24 + 16
24 = 1.16 + 8
16 = 2.8
Gambar 3.3 Tabel ASCII Tambahan
Jadi, GCD(40,24) = 8.
Kode ASCII yang digunakan dalam
Kode ASCII
mengimplementasikan algoritma ini
adalah yang berbasis desimal.
ASCII (American Standard Code for
Information Interchange) digunakan
dalam pertukaran informasi dan
Batasan Program tidak memenuhi persyaratan sebagai
hasil perhitungan untuk mencari nilai
Mengingat aplikasi ini bertujuan untuk dari public key). Lalu dicari lagi nilai
memberikan pemahaman tentang proses yang memenuhi dan dipilih nilai e
dari algoritma RSA maka program ini selanjutnya yaitu 3 maka :
dibatasi dalam hal mensimulasikan GCD ( e , m )  GCD ( 3, 3958384
proses dari algoritma RSA, yaitu )  GCD ( 3958384 , 3 mod
mengurangi jumlah maksimal digit dari 3958384 )  GCD ( 3958384 , 3 )
p dan q pada proses pembangkitan  GCD ( 3 , 3958384 mod 3 ) 
bilangan prima. Selain untuk GCD ( 3 , 1 )
memudahkan pengguna dalam Karena nilai b sudah menjadi 0 maka
memahami algoritma, jumlah digit yang inilah akhir dari perhitungan
terlalu besar akan memperlambat proses Greatest Common Divisor dengan
pembangkitan bilangan prima
nilai dari GCD ( 3 , 3958384 )
(dipengaruhi oleh waiting time yang sebesar 1. Karena jawaban dari GCD
terlalu lama). Batasan jumlah digit p dan ( 1, 0 ) adalah 1 maka bilangan 3
q yang ditetapkan dalam program ini memenuhi persyaratan untuk
adalah 1000. menjadi e, maka ditetapkan nilai e =
Berikut akan dijelaskan secara 3.
rinci proses dari algoritma RSA dengan
menggunakan contoh 5. Hitung nilai d, dengan rumus ( 1 +
Plainteks = 1A! nm ) / e. Lalu dipilih nilai dari n
Kode ASCII masing-masing karakter : 1 mulai dari 0 sampai dengan tak
= 49 ; A = 65 ; ! = 33 terhingga sampai ditemukan nilai d
1. p = 3593 ; q = 1103 berupa bilangan bulat.
2. n = p * q = 3963079  n=0
3. m = (p-1)(q-1) = 3958384
4. Pilih e dimana e relatively prime to  d = ( 1 + 0 . 3958384 ) / 3 
M dan lebih kecil dari M. Dengan d = 1 / 3  d = 0.33 (tidak
menggunakan teknik brute force memenuhi persyaratan)
sebagai berikut  n=1
e=2  d = ( 1+ 1 . 3958384 ) / 3  d
GCD ( e , m )  GCD ( 2, 3958384 = ( 1 + 3958384 ) / 3  d =
)  GCD ( 3958384 , 2 mod 3958385 /3  d = 1319461 sisa
3958384 )  GCD ( 3958384 , 2 ) 2
 GCD ( 2 , 3958384 mod 2 )  (tidak memenuhi persyaratan)
GCD ( 2 , 0 )  n=2
 d = ( 1 + 2 . 3958384 ) / 3 
Maka ini adalah bagian akhir
d = ( 1 + 7916768 ) / 3  d =
perhitungan Greatest Common
7916769 / 3  d = 2638923 sisa
Divisor karena nilai b sudah menjadi
0
0, jika perhitungan diteruskan maka
(memenuhi persyaratan)
nilai dari 2 mod 0 akan tidak
Maka didapat nilai d = 2638923
terdefinisikan. Maka hasil dari GCD
6. Maka public key nya = ( e , n ) = ( 3 ,
( 2 , 3958384 ) = 2. Jawaban dari
3963079 )
GCD ( 2 , 0 ) adalah 2 (karena
7. Private key nya = ( d , m ) = (
jawabannya bukan 1 maka nilai e = 2
2638923, 3958384 )
8. Proses enkripsi dengan Form utama tersebut memiliki tiga buah
menggunakan persamaan c = ple mod tombol yang diantaranya berguna untuk
n berpindah ke halaman sebelumnya, ke
Diketahui : halaman selanjutnya serta tombol untuk
pl1 = 49 ; pl2 = 65 ; pl3 = 33 ; e = 3 ; melakukan pembangkitan bilangan
n = 3963079 prima yang baru.
Maka enkripsi datanya sebagai
berikut : Pembahasan Program

 c1 = 493 mod 3963079 Aplikasi simulasi algoritma RSA ini


c1 = 117649 mod 3963079 pada dasarnya memiliki tiga buah proses
yaitu pembangkitan kunci, proses
c1 = 117649 enkripsi dan proses dekripsi.
 c2 = 653 mod 3963079 Di dalam program ini terdapat enam
function yang secara esensial
c2 = 274625 mod 3963079 mengaplikasikan algoritma RSA.
c2 = 274625 Masing-masing function tersebut akan
dijelaskan sebagai berikut.
 c3 = 333 mod 3963079
c3 = 35937 mod 3963079 Function GeneratePrima
c3 = 35937
Function ini digunakan untuk
9. Proses dekripsi dengan membangkitkan bilangan prima. Di
menggunakan persamaan pl = cd mod dalam function ini dibuat sebuah
n variabel global bertipe array yang
Diketahui : digunakan untuk menampung bilangan-
c1 = 117649 ; c2 = 274625 ; c3 = bilangan prima yang dibangkitkan serta
35937 ; d = 2638923 ; n = 3963079 sebuah variabel global yang digunakan
Maka dekripsi datanya adalah untuk membatasi jumlah maksimum
sebagai berikut : bilangan prima hasil dari pencarian nanti
(di dalam program ini ditetapkan jumlah
 pl1 = 1176492638923 mod 3963079
maksimal hasil pencarian adalah 1000).
pl1 = 49
Langkah awal dilakukan penampungan
 pl2 = 2746252638923 mod 3963079
angka 2 di dalam array sebagai bilangan
pl2 = 65
prima pertama (diletakkan di dalam
 pl3 = 359372638923 mod 3963079 array indeks ke-0). Lalu ditampung
pl3 = 33 bilangan 3 di dalam suatu variabel
10. Konversi dari bilangan ASCII ke sebagai bilangan yang pertama kali akan
dalam karakter diperiksa untuk mengetahui apakah
49 = 1 bilangan tersebut merupakan bilangan
65 = A prima atau tidak.
33 = ! Terdapat perulangan yang dimulai dari 0
sampai dengan banyaknya jumlah
Perancangan Program bilangan prima yang telah dibangkitkan
tadi. Di dalam perulangan ini dilakukan
Secara umum, aplikasi ini memiliki form hal-hal sebagai berikut :
utama yang menampung beberapa panel.
Dibuat kondisi untuk memeriksa prima nilai acak2 dengan kondisi jika nilai
atau tidaknya suatu bilangan. Cara acak1 ≠ acak2 maka perulangan selesai.
mengeceknya adalah dengan melihat sisa Setelah itu nilai acak1 dan acak2
hasil bagi bilangan tersebut dengan dijadikan sebagai indeks dari variabel p
bilangan-bilangan prima yang sudah dan q untuk menentukan bilangan prima
ditemukan sebelumnya. Jika sisa hasil yang dipilih dari hasil pembangkitan
bagi bilangan sama dengan 0 maka dapat pada function GeneratePrima.
dikatakan bilangan tersebut bukanlah Fungsi bilanganPrima ini juga
bilangan prima dan dapat diabaikan menangani pencarian nilai n = p * q dan
namun bilangan tersebut langsung m = ( p – 1 )( q – 1 ).
ditambahkan dengan bilangan 2. Tetapi
jika sisa hasil bagi bilangan tidak sama Function gcdKey
dengan 0 maka bilangan tersebut
dinyatakan sebagai bilangan prima Lalu terdapat function yang digunakan
dengan memasukkannya ke dalam array untuk mengaplikasikan algoritma
yang sudah disediakan untuk Euclide (algoritma yang digunakan
menampung bilangan-bilangan prima untuk mencari faktor dari dua buah
yang telah ditemukan. Penambahan bilangan) yang diberi nama gcdKey
bilangan 2 setelah pemeriksaan prima yang memiliki dua buah variabel sebagai
atau tidaknya bilangan dilakukan untuk parameter. Di dalam function ini terdapat
mengubah bilangan selanjutnya yang dua buah variabel yaitu i yang digunakan
akan diperiksa keprimaannya. dalam perulangan dan r yang berbentuk
array digunakan untuk menampung nilai
Function bilanganPrima hasil pemfaktoran suatu bilangan.
Function ini memiliki perulangan yang
Function ini digunakan untuk memilih digunakan untuk mencari hasil modulasi
dua buah bilangan prima secara acak dari suatu bilangan dengan bilangan
dari hasil pembangkitan bilangan prima selanjutnya, dimana hasilnya disimpan
yang telah dilakukan oleh function untuk digunakan dalam perhitungan
GeneratePrima. Function ini memiliki selanjutnya. Perulangan ini berlangsung
dua buah variabel yaitu acak1 dan acak2 sampai nilai bilangan sama dengan 0.
yang digunakan untuk menampung
indeks masing-masing bilangan acak Function gcdE
yang terpilih. Variabel acak1 memiliki
bilangan acak yang nilainya ditentukan Function ini digunakan untuk mencari
oleh hasil perkalian fungsi Math.random kunci publik guna mengenkripsi suatu
dengan nilai maksimal dari bilangan plainteks. Di dalam function ini dibuat
prima yang telah dibangkitkan pada perulangan yang di dalamnya terdapat
function GeneratePrima dan hasil proses penelusuran nilai variabel gcd
perkalian tersebut dibulatkan ke atas dimana nilai m dan e digunakan sebagai
dengan menggunakan fungsi Math.ceil. parameter kunci publik. Perulangan ini
Pencarian nilai acak2 sama caranya membutuhkan function gcdKey dalam
dengan variabel acak1 namun untuk pemfaktoran dari bilangan prima.
menghindari terpilihnya bilangan yang Dimana perulangan akan berakhir ketika
sama antara variabel acak1 dengan nilai dari variabel gcd sudah sama
acak2 dibuat perulangan dalam mencari
dengan 1 setelah itu function akan menjadi special character yang masih
mengembalikan nilai variabel m. berada dalam range ASCII.
Misalkan plainteks yang diinput adalah
Function gcdD string “COBA” dengan p = 5843, q =
3329, n = 19451347, m = 19442176, e =
Function ini digunakan untuk mencari 2, d = 12961451 dengan data-data yang
kunci privat yang akan digunakan dalam ditunjukkan oleh Tabel 3.1.
proses dekripsi plainteks. Di dalam
function ini dibuat perulangan yang
memproses penelusuran nilai variabel x
sampai didapatkan nilai hasil bagi x
dengan e berupa bilangan bulat dan Tabel 3.1 Tabel Data Awal Plainteks
didapat nilai d sama dengan hasil bagi
tersebut dimana nilai x dalam Berikut adalah tabel-tabel hasil
perulangan didapat dari hasil tambah 1 perhitungan dari proses perulangan
dengan hasil kali m dengan nilai iterasi
yang sekarang.

Function pownmod3

Function ini digunakan dalam proses


enkripsi dan mengacu pada rumus
enkripsi yaitu ci = plie mod n. Function
ini memiliki tiga buah variabel sebagai
parameter, diantaranya num untuk
menampung nilai ASCII dari tiap
karakter dalam plainteks yang akan Tabel 3.2 Tabel Konversi Karakter
dienkripsi, pow untuk menyimpan hasil Pertama
eksponensial dan mod untuk menyimpan
hasil modulasi. Untuk dapat memperoleh Karena n sudah sama dengan 0,
nilai yang besar dari hasil enkripsi tanpa menandakan kuota untuk karakter
kehilangan presisi nya maka tersebut dalam range kode ASCII sudah
digunakanlah class BigInteger untuk terpenuhi, hal ini mengakibatkan
menampung bilangan integer yang besar. perulangan sudah berakhir dan berlanjut
ke karakter berikutnya yaitu O yang
Function cipherKarakter akan dijabarkan oleh Tabel 3.3.

Merupakan function yang digunakan


untuk mengubah urutan bilangan hasil
enkripsi ke dalam special character.
Function ini memiliki dua buah
parameter yaitu variabel angka dan n
yang masing-masing bertipe data long.
Di dalam function ini terdapat
perulangan yang bertujuan untuk
mengubah urutan bilangan hasil enkripsi Tabel 3.3 Tabel Konversi Karakter
Kedua
Berikutnya adalah karakter B string plainteks ke dalam kode ASCII
yang akan dijelaskan sebagai berikut :
1. Dibuat variabel yang digunakan
untuk menampung plainteks yang
telah diinput.
2. Dibuat variabel array yang
digunakan untuk menampung tiap
karakter dari plainteks dan beisi
informasi panjang dari plainteks
(berdasarkan jumlah karakter yang
Tabel 3.4 Tabel Konversi Karakter diinput).
Ketiga 3. Terdapat perulangan dimulai dari 0
sampai dengan panjang plainteks . Di
Terakhir adalah karakter A dalam perulangan ini tiap karakter
dari string plainteks dikonversi ke
dalam bentuk karakter ASCII yang
hasilnya ditampilkan dalam tabel
agar mudah dilihat.
Selain proses pengkonversian string
plainteks ke dalam kode ASCII, function
ini juga menangani proses pengubahan
special character hasil enkripsi ke dalam
urutan bilangan untuk dapat diproses
Tabel 3.5 Tabel Konversi Karakter dalam pendekripsian. Prosesnya akan
Keempat dijabarkan sebagai berikut :
Spesial character yang dihasilkan :
Hasil yang diperoleh dari proses Û |ï | c |Á0
pengubahan hasil enkripsi dalam urutan Urutan bilangan yang dihasilkan :
bilangan ke dalam special character 2191504 | 2391337 | 8994 | 193484
adalah sebagai berikut n = 19451347 ; p = 3593 ; q = 1103 ; e =
Û |ï | c |Á0 . 3 ; d = 2638923
Urutan bilangan yang pertama adalah
Function 2191504, detail konversinya ditunjukkan
prosesKonversiMouseClicked pada Tabel 3.6.

Function ini adalah function yang


menangani ketika tombol konversi di
tekan. Pada function ini, ketika tombol
konversi ditekan maka seluruh function
yang sudah dibuat akan dipanggil
sekaligus, hal ini bertujuan untuk
meminimalisasi waktu yang dibutuhkan
ketika tombol “Selanjutnya” dan Tabel 3.6 Tabel Konversi Karakter
“Sebelumnya” diklik. Pertama
Selain memanggil function-function,
prosesKonversiMouseClicked juga Dari Tabel 3.35 didapatkan hasil
menangani langsung proses konversi konversi adalah 67 yang merupakan
huruf C dalam karakter. Urutan bilangan Dari Tabel 3.9 didapatkan hasil konversi
yang kedua adalah 2391337, detail adalah 65 yang merupakan huruf A
konversinya ditunjukkan pada Tabel 3.7. dalam karakter.

Input Plainteks dan Konversi ke


dalam Kode ASCII

Berikut ini adalah tampilan ketika


program pertama kali dijalankan.
Terdapat input field yang disediakan
bagi user dalam menginput plainteks.
Tabel 3.7 Tabel Konversi Karakter
Misalnya plainteks yang diinput adalah
Kedua
string “COBA” setelah itu klik tombol
“Konversi” maka hasil konversinya
Dari Tabel 3.7 didapatkan hasil konversi
adalah sebagai berikut :
adalah 79 yang merupakan huruf O
C  67 B  66
dalam karakter. Urutan bilangan yang
O  79 A  65
ketiga adalah 8994, detail konversinya
Hasil konversi tersebut tampil dalam
ditunjukkan pada Tabel 3.8.
bentuk tabel seperti yang ditunjukkan
oleh Gambar 4.38.

Tabel 3.8 Tabel Konversi Karakter


Ketiga

Dari Tabel 3.8 didapatkan hasil konversi


adalah 66 yang merupakan huruf B Gambar 4.38 Inputan Plainteks dan Hasil
dalam karakter. Urutan bilangan yang Konversinya
keempat adalah 193484, detail
konversinya ditunjukkan pada Tabel 3.9 Pembangkitan Bilangan Prima

Bagian ini menampilkan hasil


pembangkitan dua buah bilangan prima
seperti ditunjukkan oleh Gambar 4.39.

Tabel 3.9 Tabel Konversi Karakter


Keempat
Gambar 4.39 Hasil Pembangkitan Gambar 4.41 Hasil Pembangkitan Kunci
Bilangan Prima Publik

Pemrosesan Bilangan Prima Pencarian Kunci Privat

Bagian ini menampilkan hasil Pada bagian ini ditampilkan runutan


pemrosesan dua buah bilangan prima hasil pencarian nilai d yang akan
yaitu perkalian diantaranya untuk digunakan sebagai parameter kunci
mendapatkan nilai n dan m seperti yang privat serta ditampilkan juga nilai
ditunjukkan oleh Gambar 4.40. iterasinya.

Gambar 4.40 Hasil Penghitungan Gambar 4.42 Hasil Pembangkitan Kunci


Bilangan Prima Privat

Pencarian Kunci Publik Review Hasil

Pada bagian ini ditampilkan runutan Bagian ini menampilkan hasil yang akan
hasil pencarian nilai e beserta nilai gcd digunakan dalam proses enkripsi
yang sesuai untuk dijadikan parameter maupun dekripsi yaitu nilai e, d dan n
kunci publik. seperti yang ditunjukkan Gambar 4.43.
KESIMPULAN DAN SARAN

Kesimpulan

Langkah-langkah utama pada


algoritma RSA di antaranya
pembangkitan bilangan prima yang
dipilih secara acak, penerapan algoritma
Euclidean untuk mendapatkan parameter
kunci publik dan kunci privat serta
Gambar 4.43 Hasil Penghitungan untuk proses enkripsi dan dekripsi. Java
Proses Enkripsi dan Dekripsi memiliki sejumlah fungsi pustaka yang
dapat mengimplementasikan algoritma
Enkripsi tersebut. Pembangkitan bilangan prima
diimplementasikan dalam suatu fungsi
Bagian ini menampilkan hasil enkripsi yang khusus yang membutuhkan fungsi
dari data-data yang sudah dimiliki. Math.ceil dalam penentuan indeks array
yang menampung bilangan-bilangan
prima yang dibangkitkan. Selain itu
digunakan juga fungsi Math.random
untuk pembangkitan bilangan acak.
Untuk penerapan algoritma Euclidean
dibuat suatu fungsi khusus yang
menggunakan fungsi Decimal Format
untuk pengaturan jumlah digit di
belakang koma ketika mencari nilai d
Gambar 4.44 Proses Enkripsi (karena dibutuhkan nilai d yang bulat).
Sedangkan untuk mengaplikasikan
Dekripsi perhitungan enkripsi dan dekripsi,
digunakan class BigInteger yang mampu
Bagian ini menampilkan hasil dekripsi mengimplementasikan sejumlah operasi
dari data-data yang sudah dimiliki. Dari aritmatika untuk bilangan bulat yang
sini kita dapat lihat bahwa algoritma sangat besar. Operasi-operasi ini sering
RSA yang diimplementasikan dalam digunakan di aplikasi kriptografi yg
aplikasi ini bersifat invertible. melibatkan ratusan bahkan ribuan bit.
Pembuatan aplikasi simulasi kriptografi
berbasis algoritma RSA ini dapat
membuktikan bahwa algoritma
kriptografi RSA dapat
diimplementasikan dengan
menggunakan fungsi-fungsi khusus yang
tersedia dalam bahasa pemrograman
Java. Aplikasi ini bersifat standalone
dan hanya menampilkan proses dari
algoritma RSA saja. Aplikasi ini dibuat
Gambar 4.45 Proses Dekripsi komunikatif sehingga diharapkan dapat
memberi pemahaman mendalam Algoritma RSA – Caesar Cipher,
mengenai langkah-langkah algoritma
Program Magister Teknik Elektro
RSA.
Bidang Khusus Teknik Komputer
Saran
Program Pascasarjana Institut
Penulis menyadari bahwa masih Teknologi Bandung, 2005.
terdapat beberapa kekurangan dalam
aplikasi ini, untuk itu melalui bagian ini
penulis hendak memberikan saran bagi Irawan, E-Trik JAVA (Dasar
pengembangan dan penyempurna
Pemrograman Java), Maxikom,
selanjutnya. Salah satu kekurangan
aplikasi ini adalah terbatasnya jumlah Palembang, 2007.
bilangan prima yang dapat dibangkitkan
yaitu 1000 bilangan. Penulis berharap
dalam pengembangan aplikasi berbasis Muhazir, Web Design and Programming
algoritma RSA dapat memenuhi
Tutorial,
persyaratan dari algoritma RSA itu
sendiri yaitu bilangan prima yang http://indodesain.org/2008/06/03/tutorial
digunakan berjumlah lebih dari 100
-dasar-pemrograman-java-berbasis-gui-
digit.
Demikian saran yang dapat diajukan menggunakan-netbeans/, Mei 2008.
oleh penulis, semoga aplikasi ini dapat
dikembangkan menjadi lebih baik dan
lebih bermanfaat dimasa mendatang. M. Zaki Riyanto dan Ardhi Ardhian,
Kriptografi Kunci Publik: Sandi RSA,
DAFTAR PUSTAKA Yogyakarta, 30 Agustus 2008.

Aulya Suryana dkk, Enkripsi,


Rinaldi Munir. Kriptografi, Informatika,
Manajemen Teknologi Informasi,
Bandung, 2006.
Sekolah Tinggi Manajemen Informatika
dan Teknik Komputer (STMIK) –
URL : http://www.asciitable.com/
STIKOM BALI, 2007.

Bambang Harianto, Esensi-esensi


Bahasa Pemograman Java, 2005.

Budhi Irawan, Rancang Bangun Sistem


Keamanan Instant Messanger
Menggunakan Kriptografi Dengan