bab ii

71
2. TINJAUAN PUSTAKA 2.1. Pengantar Ilmu Kriptografi Ilmu kriptografi adalah ilmu yang mempelajari tentang penyembunyian huruf atau tulisan sehingga membuat tulisan tersebut tidak dapat dibaca orang yang tidak berkepentingan. Kriptografi sudah dipakai sejak zaman Julius Caesar dimana akan mengirimkan pesan kepada panglimanya tetapi tidak mempercayai kurir pembawa pesan tersebut. Kriptografi mempunyai 2 (dua) bagian yang penting, yaitu enkripsi dan dekripsi. Enkripsi adalah proses dari penyandian pesan asli menjadi pesan yang tidak dapat diartikan seperti aslinya. dekripsi sendiri berarti merubah pesan yang sudah disandikan menjadi pesan aslinya. Pesan asli biasanya disebut plaintext, sedangkan pesan yang sudah disandikan disebut ciphertext.. Pada gambar 2.1 dapat dilihat bahwa masukan berupa plaintext, akan masuk kedalam blok enkipsi dan keluarnya akan berupa ciphertext, kemudian ciphertext akan masuk kedalam blok dekrripsi dan keluarnya akan kembali menjadi plaintext semula. 5 Dekrip si Enkrips i Chipertext Plaintext Plaintext

Upload: erlangga

Post on 16-Jun-2015

1.369 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Bab II

2. TINJAUAN PUSTAKA

2.1. Pengantar Ilmu Kriptografi

Ilmu kriptografi adalah ilmu yang mempelajari tentang penyembunyian

huruf atau tulisan sehingga membuat tulisan tersebut tidak dapat dibaca orang

yang tidak berkepentingan. Kriptografi sudah dipakai sejak zaman Julius Caesar

dimana akan mengirimkan pesan kepada panglimanya tetapi tidak mempercayai

kurir pembawa pesan tersebut.

Kriptografi mempunyai 2 (dua) bagian yang penting, yaitu enkripsi dan

dekripsi. Enkripsi adalah proses dari penyandian pesan asli menjadi pesan yang

tidak dapat diartikan seperti aslinya. dekripsi sendiri berarti merubah pesan yang

sudah disandikan menjadi pesan aslinya. Pesan asli biasanya disebut plaintext,

sedangkan pesan yang sudah disandikan disebut ciphertext..

Pada gambar 2.1 dapat dilihat bahwa masukan berupa plaintext, akan

masuk kedalam blok enkipsi dan keluarnya akan berupa ciphertext, kemudian

ciphertext akan masuk kedalam blok dekrripsi dan keluarnya akan kembali

menjadi plaintext semula.

Gambar 2.1 Proses Enkripsi dan Dekripsi

Ada 2 (dua) model algoritma enkripsi yang menggunakan kunci, yaitu

kunci simetrik dan kunci asimetrik.

Enkripsi kunci simetrik yang biasanya disebut enkripsi konvensial adalah

enkripsi yang menggunakan kunci yang sama untuk enkripsi maupun dekripsi,

dari Gambar 2.2 terlihat bahwa untuk mengenkripsi maupun mendekripsi pesan

hanya menggunakan satu buah kunci (K) saja.

Kunci K

5

DekripsiEnkripsi

ChipertextPlaintext Plaintext

Page 2: Bab II

Gambar 2.2 Proses Enkripsi Kunci Simetrik

Penggunaan metode ini membutuhkan persetujuan antara pengirim dan

penerima tentang kunci sebelum mereka saling mengirim pesan. Keamana dari

kunci simetrik tergantung pada kerahasiaan kunci, apabila seorang penyusup

dapat menemukan kunci dengan mudah dapat membaca pesan yang sudah

dienkripsi.

Enkripsi kunci simetrik dapat dibagi kedalam 2 (dua) kelompok yaitu

metode stream cipher dan metode block ciphertext .

Enkripsi kunci asimetrik (biasa disebut enkripsi kunci publik) dibuat

sedemikian rupa sehingga kunci yang dipakai untuk enkripsi berbeda dengan

kunci yang dipakai untuk dekripsi. Enkripsi kunci publik disebut demikian karena

kunci untuk enkripsi boleh disebarluaskan kepada umum sedangkan kunci untuk

mendekripsi hanya disimpan oleh orang yang bersangkutan. Enkripsi asimetrik

dapat ditulis sebagai berikut :

Ek (P) = C

Dk (C) = P

Contohnya seperti pada Gambar 2.3 bila seseorang ingin mengirim pesan

kepada orang lain maka orang tersebut menggunakan kunci publik orang tersebut

untuk mengenkripsi pesan yang kita kirim kepadanya lalu orang tersebut akan

mendekripsi pesan tersebut dengan kunci privat miliknya.

Kunci Publik Kunci Privat

6

DekripsiEnkripsi

ChipertextPlaintext Plaintext

Page 3: Bab II

Gambar 2.3 Enkripsi Kunci Asimetrik

2.2. Tujuan dari Kriptografi

Seperti juga perkembangan ilmu kriptografi, tujuan-tujuan dari kriptografi

teruslah berkembang. Bila pertama kali dibuat hanya untuk keamanan data saja,

tetapi sekarang semakin banyak tujuan-tujuan yang ingin dicapai, yaitu :

1. Privasi, Musuh tidak dapat membongkar tulisan yang kita kirim.

2. Autentikasi, Penerima pesan dapat meyakinkan dirinya bahwa pesan

yang diterima tidak terjadi perubahan dan berasal dari orang yang

diinginkan.

3. Tanda tangan, penerima pesan dapat meyakinkan pihak ketiga bahwa

pesan yang diterima berasal dari orang yang diinginkan .

4. Minimal, tidak ada yang dapat berkomunikasi dengan pihak lain

kecuali berkominakasi dengan pihak yang diinginkan.

5. Pertukaran bersama, suatu nilai (misalnya tanda tangan sebuah

kontrak) tidak akan dikeluarkan sebelum nilai lainnya (misalnya tanda

tangan pihak lain) diterima.

6. Koordinasi, didalam komunikasi dengan banyak pihak, setiap pihak

dapat berkomunikasi untuk tujuan yang sama walaupun terdapat

kehadiran musuh.

2.3. Sekilas Mengenai GPRS

7

DekripsiEnkripsi

ChipertextPlaintext Plaintext

Page 4: Bab II

GPRS merupakan sistem transmisi berbasis paket untuk GSM yang

menggunakan prinsip 'tunnelling'. Ia menawarkan laju data yang lebih tinggi. Laju

datanya secara kasar sampai 160 kbps dibandingkan dengan 9,6 kbps yang dapat

disediakan oleh rangkaian tersakelar GSM. Kanal-kanal radio ganda dapat

dialokasikan bagi seorang pengguna dan kanal yang sama dapat pula digunakan

dengan berbagi antar pengguna sehingga menjadi sangat efisien. Dari segi biaya,

harga mengacu pada volume penggunaan. Penggunanya ditarik biaya dalam

kaitannya dengan banyaknya byte yang dikirim atau diterima, tanpa

memperdulikan panggilan, dengan demikian dimungkinkan GPRS akan menjadi

lebih cenderung dipilih oleh pelanggan untuk mengaksesnya daripada layanan-

layanan IP.

GPRS merupakan teknologi baru yang memungkinkan para operator

jaringan komunikasi bergerak menawarkan layanan data dengan laju bit yang

lebih tinggi dengan tarif rendah, sehingga membuat layanan data menjadi menarik

bagi pasar massal. Para operator jaringan komunikasi bergerak di luar negeri kini

melihat GPRS sebagai kunci untuk mengembangkan pasar komunikasi bergerak

menjadi pesaing baru di lahan yang pernah menjadi milik jaringan kabel, yakni

layanan internet. Kondisi ini dimungkinkan karena ledakan penggunaan internet

melalui jaringan kabel (telepon) dapat pula dilakukan melalui jaringan bergerak.

Layanan bergerak yang kini sukses di pasar adalah, laporan cuaca, pemesanan

makanan, berita olah raga sampai ke berita-berita penting harian. Dari

perkembangan tersebut, dapat dirasakan dampaknya pada kemunculan berbeagai

provider HP yang bersaing menawarkan tarif GPRS yang semakin terjangkau.

Dalam teorinya GPRS menjanjikan kecepatan mulai dari 56 kbps sampai

115 kbps, sehingga memungkinkan akses internet, pengiriman data multimedia ke

komputer, [[notebook]] dan [[handheld computer]]. Namun, dalam

implementasinya, hal tersebut sangat tergantung faktor-faktor sebagai berikut:

1. Konfigurasi dan alokasi time slot pada level BTS.

2. Software yang dipergunakan.

3. Dukungan fitur dan aplikasi ponsel yang digunakan

8

Page 5: Bab II

Ini menjelaskan mengapa pada saat-saat tertentu dan di lokasi tertentu

akses GPRS terasa lambat, bahkan lebih lambat dari akses CSD yang memiliki

kecepatan 9,6 kbps.

2.4. Skema Transmisi Data

Gambar 2.4 Komponen Dasar Jaringan GPRS

“User sessions” terhubung dari mobile station (MS) ke Base Transceiver

Station (BTS), yang juga terhubung ke Base Station Controller (BSC).

Kombinasi fungsi dari BTS dan BSC sering dikenal sebagai Base Station

Subsystem (BSS). Dari sini, SGSN menyediakan akses ke GGSN, yang berperan

sebagai gateway ke “data network”. Kumpulan SGSNs dan GGSNs dalam

jaringan GPRS dikenal sebagai GPRS Support Nodes (GSNs). Koneksi antara

SGSN dan GGSN menggunakan protokol yang disebut “GPRS Tunneling

Protocol (GTP)”. Koneksi antara GGSN dan PDN menggunakan Internet

Protocol (IP). Untuk memberikan “mobile sessions”

sebuah IP address, GGSN menggunakan Dynamic Host Configuration Protocol

(DHCP). GGSN juga menggunakan server Remote Dial-In User Service

(RADIUS) untuk “authorisasi dan authentikasi “remote users”. Servis DHCP dan

9

Page 6: Bab II

RADIUS dapat dibuat di “global configuration level” (GPRS DHCP & RADIUS

commands).

2.5. Pemrograman Java

Java adalah bahasa pemrograman serbaguna. Java dapat digunakan untuk

membuat suatu program sebagaimana membuat program dengan bahasa

pemrograman seperti Pascal atau C++. Java juga mendukung sumber daya

internet, yaitu World Wide Web. Java juga mendukung aplikasi client-server, baik

dalam jaringan lokal (LAN) maupun jaringan berskala luas (WAN).

Java dikembangkan oleh Sun Microsystems pada Agustus 1991, dengan

nama semula Oak. Konon Oak adalah pohon semacam jati yang terlihat dari

jendela tempat pembuatnya, James Glosing. Ada yang mengatakan bahwa Oak

adalah singkatan dari “Object Application Kernel”, tetapi ada yang menyatakan

hal itu muncul setelah nama Oak diberikan. Pada 1995, karena nama Oak

dianggap kurang komersial, maka diganti menjadi Java.

Platform Java memiliki tiga buah edisi yang berbeda, yaitu Java2 Standard

Edition (J2SE), Java2 Enterprise Edition (J2EE), dan Java2 Micro Edition

(J2ME). Masing-masing diarahkan untuk tujuan tertentu dan untuk lingkungan

komputasi yang berbeda.

Java2 Enterprise Edition (J2EE) : J2EE merupakan kelompok dari

beberapa API dari Java dan teknologi selain Java. J2EE digunakan pada

perangkat keras yang mempunyai spesifikasi dan memory yang besar seperti

pada komputer server.

Java2 Standard Edition (J2SE) : J2SE merupakan lingkungan dasar

dari Java yang merupakan inti dari bahasa pemrograman Java. J2SE

didesain untuk dapat berjalan pada komputer desktop dan komputer

workstations.

Java2 Micro Edition (J2ME) : J2ME didesain untuk piranti dengan

memori kecil, layar display terbatas dan power pemrosesan yang juga

terbatas seperti ponsel, pager atau PDA.

10

Page 7: Bab II

2.5.1. Tipe Data Primitif

Java memiliki delapan tipe data primitif, meliputi 3 tipe untuk bilangan

bulat, 2 tipe untuk bilangan titik mengambang, dan sisanya untuk karakter dan

boolean.

Gambar 2.5 Tipe Data Primitif pada Java

2.5.1.1. Tipe Bilangan Bulat

Ada empat macam tipe bilangan bulat. Perbedaan masing-masing tipe

data terletak pada jangkauan nilai yang dicakup. Tabel 2.1 memperlihatkan

perbedaan keempat tipe bilangan bulat.

Tabel 2.1 Tipe Data Bilangan Bulat

Tipe Ukuran Jangkauan Nilai

byte 8 bit -128 s/d 127

short 16 bit -32.768 s/d 32.767

int 32 bit -2.147.483.648 s/d 2.147.483.647

long 64 bit -9.232.372.036.854.775.808 s/d

9.232.372.036.854.775.807

2.5.1.2. Tipe Bilangan Titik Mengambang

11

Page 8: Bab II

Dua tipe data yang berkaitan dengan bilangan titik mengambang adalah

float dan double. Perbedaan kedua tipe ini diperlihatkan pada Tabel 2.2.

Tabel 2.2 Tipe Data Bilangan Titik Mengambang

Tipe Ukuran Jangkauan Nilai

float 32 bit, presisi 6-7 digit -3.4E38 s/d +3.4E38

double 64 bit, presisi 15-15 digit -1.7E308 s/d 1.7E308

2.5.1.3. Tipe Data Karakter

Tipe data char adalah tipe untuk menyatakan sebuah karakter. Dalam hal

ini dapat berupa kerakter apa saja (yang tercakup dalam himpunan kode Unicode).

2.5.1.4. Tipe Data Boolean

Tipe data boolean digunakan untuk menangani keadaan logika atau

keadaan dua kemungkinan nilai. Nilai yang dapat digunakan adalah true (berarti

benar) dan false (berarti salah).

2.5.2. Literal

Literal adalah suatu nilai yang ditulisakn pada kode sumber Java. Setiap

literal mempresentasikan nilai suatu tipe, dimana tipe itu sendiri menjelaskan

bagaimana sifat nilai tersebut dan bagaimana penyimpanannya. Literal pada Java

antara lain:

literal bilangan,

literal karakter,

literal boolean, dan

literal string.

2.5.2.1. Literal Bilangan

Literal bilangan bulat tergolong sebagai long. Simbol L atau l (huruf l)

dapat ditambahkan di belakang bilangan. Contoh :

Tabel 2.3 Literal Bilangan

12

Page 9: Bab II

Literal Keterangan

4L Bilangan 4 bertipe long

-4L Bilangan -4 bertipe long

2.5.2.2. Literal Karakter

Literal karakter digunakan untuk menyatakan sebuah karakter. Karakter

ditulis dalam tanda petik tunggal Contoh :

Tabel 2.4 Literal Karakter

Literal Keterangan

‘a’ Karakter huruf a

‘#’ Karakter simbol #

‘8’ Karakter angka 8

Sebagaimana halnya pada C atau C++, pada Java terdapat istilah kode

escape. Kode escape adalah kode karakter yang penulisannya diawali dengan

simbol “\”. Tabel 2.5 memperlihatkan sejumlah karakter yang penulisannya

diawali dengan simbol “\”.

Tabel 2.5 Karakter Escape

Kode Keterangan

\b Backspace

\f Formfeed

\n Newline

\r Carriage return

\t Tab

\’ Petik tunggal

\” Petik ganda

\ddd Oktal (dd = 0 s/d 377)

\xdd Hexadesimal (dd = 0 s/d FF atau ff)

2.5.2.3. Literal Boolean

13

Page 10: Bab II

Literal boolean adalah literal yang hanya dapat berupa kata kunci true

atau false.

true berarti benar, dan

false berarti salah.

2.5.2.4. Literal String

String berarti deretan atau kombinasi sejumlah karakter. String pada

Java bukanlah sebagai tipe data primitif, melainkan sebagai instan kelas bernama

String. Suatu string tidak selamanya mengandung banyak karakter. Suatu string

juga bisa tidak memiliki karakter satupun. String seperti ini disebut string kosong.

Penulisannya berupa tanda petik ganda dan kemudian langsung diikuti dengan

petik ganda (tak ada spasi di antara kedua tanda petik ganda tersebut). Literal

string dapat pula mengandung karakter seperti newline, tab, dan sebagainya.

Bahkan bisa pula mengandung tanda petik ganda.

2.5.2.5. Definisi Konstanta

Java memungkinkan pendefinisian konstanta melalui kata kunci final.

Contoh :

final double PI = 3.14;

Menyatakan bahwa PI adalah konstanta bertipe double dengan nilai 3,14. Kata

kunci final menyatakan bahwa PI tak dapat diubah setelah didefinisikan.

2.5.3. Variabel

Variabel adalah satuan dasar penyimpanan dalam program Java. Suatu

variabel didefinisikan dengan kombinasi identifier, tipe, dan cakupan. Variabel

dapat bersifat lokal atau sementara, misalnya di dalam perulangan for, atau dapat

juga berupa variabel instans yang dapat diakses oleh semua method dalam class.

Variabel yang digunakan dalam program Java perlu dideklarasikan. Dalam

pendeklarasian, tipe dan nama variabel disebutkan, contoh:

String kalimat; atau int angka;

14

Page 11: Bab II

Setelah variabel dideklarasikan, variabel dapat diberi nilai. Caranya adalah

dengan menggunakan operator sama dengan (=), contoh:

kalimat = “Hello...”; atau angka = 5;

atau dapat pula memberikan nilai saat mendeklarasikan variabel, contoh:

String kalimat = “Hello..”;

2.5.4. Ekspresi

Ekspresi atau ungkapan adalah suatu bentuk yang menghasilkan suatu

nilai. Dalam bentuk yang sederhana, ekspresi berupa sebuah literal atau variabel.

Dalam bentuk yang lebih kompleks, suatu ekspresi melibatkan operator dan

operand. Salah satu pemakaian ekspresi adalah pada pernyataan yang

menggunakan statement println(). Contoh :

System.out.println(1 + 2 * 3);

akan menampilkan hasil ekspresi 1 + 2 * 3 ke layar.

2.5.5. Operator

Operator adalah simbol atau karakter khusus yang digunakan dalam suatu

ekspresi untuk menghasilkan suatu nilai. Menurut jumlah operand yang

dilibatkan, operator diklasifikasikan menjadi:

Operator Unary, yaitu operator yang hanya melibatkan satu operand.

Operator Binary, yaitu operator yang melibatkan dua buah operand.

Operator Tertiary, yaitu operator yang melibatkan tiga buah operand.

2.5.5.1. Operator Matematika

Tabel 2.6 Operator Matematika

Operator Keterangan

+Penjumlahan

Tanda plus

-Pengurangan

Tanda minus

* Perkalian

15

Page 12: Bab II

/ Pembagian

Semua operator matematika di atas melibatkan dua buah operand,

kecuali operator + yang berkedudukan sebagai tanda plus dan operator – yang

berkedudukan sebagai tanda minus. Operator + dan – sebagai tanda positif atau

tanda negatif hanya melibatkan satu operand.

Sebenarnya ada cara singkat untuk menggunakan operasi aritmatik binary

dalam suatu tugas. Misalnya :

x += 4;

adalah sama dengan

x = x + 4;

Operator *, /, dan % mempunyai prioritas yang sama, tetapi lebih tinggi

daripada + atau – yang berkedudukan sebagai operator binary. Sebagai contoh,

jika terdapat ekspresi seperti berikut :

1 + 2 * 3

maka 2 * 3 akan dikerjakan terlebih dahulu. Dengan demikian hasil ekspresi 1 +

2 * 3 adalah 7 bukan 9.

2.5.5.2. Operator Penambahan dan Pengurangan

Pada Java, seperti halnya pada C/ C++, memiliki operator increment dan

decrement, yaitu x++, yang berarti menambahkan satu kepada nilai yang terdapat

pada variabel x, dan x--, yang berarti mengurangi satu dari nilai variabel x.

Ekspresi x++ dan ++x mempunyai makna yang berbeda. Ekspresi x++

akan menghasilkan nilai sebesar nilai x, tetapi selanjutnya x akan dinaikkan

sebesar satu. Perbedaannya terlihat pada tabel 2.7 di bawah ini.

Tabel 2.7 Operator Penambah dan Pengurang

x semula Pernyataan Hasil y Hasil x

5 y = x++; 5 6

5 y = ++x; 6 6

5 y = x--; 5 4

5 y = --x; 4 4

16

Page 13: Bab II

2.5.5.3. Operator Penggabungan

Pada Java, operator + juga dapat digunakan pada string. Gunanya adalah

untuk menggabungkan dua buah string menjadi sebuah string baru. Contoh,

perhatikan pernyataan berikut:

System.out.println(“Selamat belajar” + “ Java”);

sama dengan “Selamat belajar Java”

2.5.5.4. Operator Penugasan

Operator penugasan berguna untuk memberikan nilai ke suatu variabel.

Tabel 2.8 dan Tabel 2.9 memperlihatkan sejumlah operator yang tergolong dalam

kategori sebagai operator penugasan.

Tabel 2.8 Operator Penugasan

Operator Keterangan

= Pemberian nilai

+ = Penambahan bilangan

- = Pengurangan bilangan

* = Perkalian bilangan

/ = Pembagian bilangan

% = Pemerolehan sisa bagi

Tabel 2.9 Operator Penugasan yang Berkaitan dengan Operasi Bit

Operator Keterangan

& = a &= x identik dengan a = a & x

^ = a ^= x identik dengan a = a ^ x

| = a |= x identik dengan a = a | x

<< = a <<= x identik dengan a = a << x

>> = a >>= x identik dengan a = a >> x

17

Page 14: Bab II

>>> = a >>>= x identik dengan a = a >>> x

2.5.5.5. Operator Pembanding

Operator pembanding atau disebut juga operator relasional berguna

untuk melakukan perbandingan. Operator relasional dapat dilihat pada tabel 2.10

berikut:

Tabel 2.10 Operator Relasional untuk Bilangan

Operator Makna Contoh

= = Kesamaan a = = b

! = Ketidaksamaan a != b

> Lebih dari a > b

< Kurang dari a < b

> = Lebih dari atau sama dengan a >= b

< = Kurang dari atau sama dengan a <= b

Ekspresi yang menggunakan operator relasional akan menghasilkan nilai

benar (true) atau salah (false). Operator relasional hanya berlaku untuk

membandingkan tipe data primitif (string tidak berlaku).

2.5.5.6. Operator Logika

Operator logika biasa digunakan untuk membentuk suatu keadaan logika

(boolean) berdasarkan sebuah atau dua buah ekspresi kondisi (tergantung operator

logika yang digunakan). Java menyediakan 3 buah operator logika, yaitu :

a. Operator && (dan)

Bentuk pemakaian operator &&:

operand_1 && operand_2

Hasil ekspresi benar jika kedua operand bernilai benar.

b. Operator || (atau)

Bentuk pemakaian operator ||:

operand_1 || operand_2

18

Page 15: Bab II

Hasil ekspresi akan bernilai benar jika terdapat operand yang bernilai

benar.

c. Operator ! (bukan)

Operator ini berguna untuk membalikkan logika. Hasil bernilai benar jika

ekspresi_kondisi bernilai salah, dan jika ekspresi_kondisi bernilai benar maka

hasilnya akan bernilai salah. Bentuk pemakaiannya:

! ekspresi_kondisi

2.5.6. Pernyataan Berkondisi

Pada Java terdapat dua buah pernyataan yang digunakan untuk melakukan

seleksi terhadap suatu kondisi, yaitu pernyataan if dan pernyataan switch.

2.5.6.1. Pernyataan if

Pernyataan if merupakan salah satu bentuk pernyataan berkondisi yang

berguna untuk pengambilan keputusan terhadap dua buah kemungkinan.

Pernyataan if sendiri pada dasarnya memiliki dua buah bentuk, yaitu yang tidak

mengandung else dan yang mengandung else.

a. Pernyataan if Sederhana

Bentuk tersederhana if berupa:

if (kondisi) {

// blok pernyataan yang dijalankan jika kondisi

bernilai benar

}

b. Pernyataan if-else

Bentuk kedua pernyataan if berupa :

if (kondisi) {

// blok pernyataan yang dijalankan jika kondisi

bernilai benar

} else {

19

Page 16: Bab II

// blok pernyataan yang dijalankan jika kondisi

bernilai salah

}

c. Pernyataan if Bersarang

Suatu pernyataan if dapat berada di dalam pernyataan if juga. Pernyataan

if seperti ini disebut if bersarang (nested if).

2.5.6.2. Pernyataan switch

Pernyataan switch memungkinkan untuk melakukan sejumlah tindakan

berbeda terhadap sejumlah kemungkinan nilai. Bentuk perintah ini:

switch (ekspresi) {

case nilaiSatu:

pernyataan_1;

break;

case nilaiDua:

pernyataan_2;

break;

....

[default: pernyataan_n;]

}

2.5.7. Perulangan Proses

Untuk menangani perulangan terhadap suatu proses, Java menyediakan

beberapa pernyataan, antara lain while, do .. while, dan for.

2.5.7.1. Pernyataan while

Pernyataan while berguna untuk melakukan proses yang berulang.

Bentuk pernyataannya sebagai berikut:

while (kondisi) {

// blok pernyataan; }

Dalam hal ini blok pernyataan akan dijalankan secara terus menerus

selama kondisi bernilai benar (true).

20

Page 17: Bab II

2.5.7.2. Pernyataan do..while

Pernyataan do..while menyerupai pernyataan while. Bentuk

pernyataannya adalah sebagai berikut:

do {

// blok pernyataan;

} while (kondisi);

Pada pernyataan ini, blok pernyataan yang terdapat dalam do..while paling

tidak dieksekusi sekali.

2.5.7.3. Pernyataan for

Pernyataan for juga berfungsi untuk menangani perulangan. Bentuk

pemakaiannya sebagai berikut:

for (inisialisasi; kondisi; kenaikan_penurunan) {

// blok pernyataan; }

2.5.8. Array

Array pada Java adalah objek yang dapat digunakan untuk menyimpan

sejumlah data yang sejenis. Elemen yang disimpan pada array dapat berupa tipe

primitif (misalnya int) ataupun instant kelas (objek).

Pada bagian pendeklarasian, array memiliki dua bentuk, yaitu:

tipePrimitif namaVariabelArray[];

atau

namaKelas namVariabelArray[];

Contoh:

String kota[];

int nilai[];

Sedangkan pada bagian penciptaan objek array dan penugasan objek ke

variabel array dilakukan dengan menggunakan kata kunci new. Bentuknya adalah

sebagai berikut:

namaKelas namaVariabel = new namaKelas[jumlahElemen];

atau

tipePrimitif namaVariabel = new tipePrimitif[jumlahElemen];

Contoh:

21

Page 18: Bab II

kota = new String[5];

nilai = new int[3];

Kemudian elemen array diakses melalui notasi:

namaVariabelArray[subskrip]

Subskrip berupa nomor elemen. Dalam hal ini elemen pertama memiliki

subskrip berupa nol, elemen kedua mempunyai subskrip 1, dan seterusnya.

Contoh:

kota[0] = “Jakarta”;

2.5.9. Objek dan Kelas

Java merupakan bahasa pemrograman yang berorientasi pada objek

(Object Oriented Programming / OOP) yang menjadikan objek sebagai

komponen utama dalam program. Objek menggabungkan data dan fungsi sebagai

satu kesatuan, sedankan pada pemrograman yang tidak berorientasi objek,

fungsilah ayng menjadi perhatian utama. Pendekatan pemrograman berorientasi

objek membuat pengembanagn program dapat dilakukan dengan lebih mudah,

mengurangai duplikasi kode, dan mengurangi kesalahan.

Pada pemrograman berorientasi objek, terdapat dua istilah yang sangat

terkenal yaitu kelas dan objek. Kedua istilah ini sering tertukar. Maka untuk

membedakannya dapat dianalogikan sebagai berikut:

Kelas itu seperti cetakan kue.

Kelas adalah cetakan untuk objek.

Objek dibuat dengan mula-mula membuat variabel yang kelak merujuk ke

objek. Variabel ini disebut variabel objek (object variable). Lalu objek diciptakan

melalui new dan hasilnya ditugaskan ke variabel objek. Contoh:

Date waktu;

waktu = new Date();

atau dapat langsung ditulis sebagai berikut:

Date waktu = new Date();

22

Page 19: Bab II

Kelas dalam Java didefinisikan dengan menggunakan kata kuci class.

Contoh sederhana dari penciptaan kelas:

class Mobil {

String warna;

int tahunProduksi; }

Pada contoh di atas, kelas yang dibuat bernama Mobil, lalu warna dan

tahunProduksi disebut variabel instan. Kemudian untuk menggunakan kelas

Mobil tadi dapat dilakukan dengan cara membuat sebuah objek dari kelas Mobil.

Contoh:

Mobil mobilku = new Mobil();

Mobilku.warna = “Merah”;

2.5.10. Konstruktor

Metode konstruktor atau biasa disebut konstruktor saja adalah metode

yang dapat digunakan untuk memberikan nilai awal saat objek diciptakan. Metode

ini akan dipanggil secara otomatis oleh Java ketika new dipakai untuk

menciptakan kelas instan. Konstruktor memiliki nama yang sama dengan kelas

dan tidak memiliki nilai balik (termasuk tidak boleh terdapat kata kunci void).

Contoh:

class Mobil {

String warna;

int tahunProduksi;

public Mobil() {

warana = “Merah”;

tahunProduksi = 2004;

} }

2.5.11. Pewarisan

Pewarisan merupakan konsep dalam pemrograman berorientasi objek yang

memungkinkan untuk membuat suatu kelas dengan didasarkan pada kelas yang

sudah mewarisi semua metode dan variabelnya. Untuk mewariskan dapat dibuat

dengan menggunakan bentuk:

class KelasTurunan extends KelasDasar {

// blok tubuh kelas; }

23

Page 20: Bab II

Pada bentuk diatas,

KelasTurunan menyatakan kelas turunan yang akan dibuat berdasarkan

sebuah kelas dasar.

KelasDasar yang terletak sesudah kata kunci extends menyatakan super

kelas.

2.5.12. Penanganan Eksepsi

Eksepsi adalah keadaan tidak normal yang muncul pada suatu bagian

program pada saat dijalankan. Penanganan eksepsi pada Java membawa

pengelolaan kesalahan program saat dijalankan ke dalam orientasi objek. Sistem

Java akan melontarkan suatu eksepsi apabila terdapat suatu kesalahan sewaktu

program dijalankan.

Penanganan eksepsi pada java diatur dengan lima kata kunci: try, catch,

throw, throws, dan finally. Berikut ini bentuk dasar bagian penanganan eksepsi:

try {

// Blok Pernyataan;

catch (exception e){

// Penanganan Eksepsi; }

Bentuk throws:

public tipe1 NamaMetode (tipe2 x, tipe3 y) throws

JenisEksepsi {

..... ; }

2.5.13. Utilitas pada Java

Ada beberapa jenis utilitas pada java yang terdapat pada paket java util,

namun pada penulisan ilmiah ini penulis hanya menggunakan dua buah utilitas,

yaitu Random dan ArrayList.

Kelas Random merupakan kelas yang memungkinkan melakukan

pembentukkan bilangan secara acak. Konstruktor pada kelas ini ada dua macam:

Random() dan Random(long seed).

Tabel 2.11 Konstruktor Random

Kosntruktor Random

24

Page 21: Bab II

Random()

Merandom berdasarkan waktu

Random(long seed)

Merandom berdasarkan satuan seed yang ditentukan pemrogram

ArrayList adalah kelas suatu senarai (List) yang memungkinkan

pembuatan objek array yang ukurannya dapat diubah sewaktu-waktu. Konstruktor

kelas ini berbentuk seperti berikut:

Tabel 2.12 Konstruktor ArrayList

Kosntruktor Random

ArrayList()

Kapasitas senarai diatur sebesar 10

ArrayList(int kapasitasAwal)

Kapasitas senarai ditentukan oleh kapasitas awal

2.5.14. Pemrograman AWT

Paket Java AWT (Abstract Window Toolkit) menggunakan sistem

penjendelaan pada komputer lokal. Dengan demikian akan terdapat tampilan

window yang berbeda antara sistem operasi Windows dengan Linux atau MacOS.

Segala tampilan pada sistem window sebenarnya didasarkan pada kelas

Component. Contoh sebagian hirarki kelas pada AWT adalah seperti berikut:

Gambar 2.6 Hirarki Kelas dalam AWT

25

Page 22: Bab II

Tabel berikut memberikan gambaran singkat tentang sejumlah komponen

dalam paket java.awt.

Tabel 2.13 Komponen dalam Paket AWT

Metode Keterangan

Component Kelas dasar untuk semua komponen yang menyusun sistem

penjendelaan. Kelas ini memiliki metode yang berfungsi untuk

memproses kejadian masukan dari pemakai.

Container Kelas yang berfungsi sebagai wadah bagi sejumlah komponen

yang akan dikelompokkan. Komponen ini tidak terlihat secara

fisik. Metode yang sering dilibatkan adalah add(). Metode ini

dapat digunakan untuk meletakkan komponen yang akan

diletakkan pada wadah ini ataupun untuk menentukan posisi

Container relatif terhadap jendela.

Panel Merupakan subkelas dari Container. Digunakan sebagai wadah

untuk sejumlah komponen yang saling terkait. Panel merupakan

ruang kecil yang biasanya berada dalam sebuah objek Frame.

Window Merupakan jendela kosong yang tidak memiliki tepi ataupun

batang menu (menu bar). Dapat digunakan untuk mewujudkan

menu pop-up. Biasanya kelas ini jarang digunakan, mengingat

dua subkelasnya (yaitu Frame dan Dialog) lebih bermanfaat.

Frame Merupakan subkelas dari Window. Memungkinkan untuk

membuat jendela yang dilangkapi dengan judul.

Dialog Merupakan kelas untuk membuat jendela yang bersifat pop-up

yang memungkinkan pemakai mengetikkan sebaris teks. Yang

lebih menarik, terdapat subkelas bernama FileDialog yang dapat

menampilkan daftar berkas yang dapat dipilih oleh pemakai.

Kelas Dialog memungkinkan untuk membuat jendela yang

bersifat modal ataupun modeless.

Applet Merupakan subkelas dari Panel. Bermanfaat untuk menangani

aplikasi yang berjalan pada Web browser.

26

Page 23: Bab II

2.5.14.1. Menangani Kejadian

Penanganan kejadian yang lain dilakukan dengan menggunakan kelas-

kelas yang terdapat pada paket java.awt.event. Cara ini mulai diperkenalkan pada

JDK 1.1. Dalam hal ini objek yang ingin menangani kejadian dinamakan

pendengar (listener). Untuk menjadi pendengar, objek perlu memanggil metode

“add listener”. Bentuk metode “add listener” sendiri bergantung pada komponen

yang akan memantau kejadian.

2.5.14.2. Kotak Dialog Pesan Kesalahan

Sebagaimana telah diketahui, Dialog adalah subkelas dari kelas Window

yang berguna untuk membuat kotak dialog. Kotak dialog biasa digunakan untuk

membuat jendela pemasukan data, menyediakan pilihan Ya atau Tidak, ataupun

hanya untuk menampilkan pesan kesalahan.

2.5.14.3. Set Layout

Kelas Container mendefinisikan metode bernama setLayout() yang

ditujukan untuk mengatur tata letak komponen-komponen. Bentuk deklarasi

metode ini adalah seperti berikut :

setLayout (LayoutManager mgr);

Terlihat bahwa pada pemanggilan metode setLayout() diperlukan

argumen yang merupakan implementasi dari LayoutManager. LayoutManager

sebenarnya adalah suatu interface. Interface ini menentukan bagaimana

komponen-komponen dalam Container ataupun turunannya (misalnya Panel)

secara dinamis diatur.

2.5.14.4. Komponen Antarmuka Grafis

a. Button

27

Page 24: Bab II

Button merupakan kelas yang berguna untuk mewujudkan tombol dalam

suatu jendela. Untuk membuat objek berkelas Button, bisa dilakukan dengan cara

sebagai berikut :

new Button(“judul”)

Dua buah metode penting yang terdapat pada kelas Button :

setLabel(), yang berfungsi untuk mengubah judul pada tombol. Argumen

berupa string yang menyatakan judul baru.

getLabel(), yang berfungsi untuk memperoleh judul pada tombol.

b. Label

Label merupakan komponen yang umum digunakan dalam antarmuka

grafis untuk menampilkan suatu string satu baris pada suatu wadah (Container

ataupun kelas-kelasnya) dan umumnya bersifat tidak untuk diubah. Tiga

konstruktor kelas ini dapat dilihat pada tabel berikut:

Tabel 2.14 Konstruktor pada Kelas Label

Konstruktor Keterangan

Label() Menciptakan objek Label dengan teks berupa string

kosong dan menggunakan perataan kiri.

Label(String teks) Menciptakan objek Label dengan tulisan sesuai dengan

teks dan menggunakan perataan kiri.

Label(String teks,

Int perataan)

Menciptakan objek Label dengan tulisan sesuai dengan

teks diletakkan sesuai dengan nilai perataan. Nilai untuk

argumen kedua dapat berupa :

o LEFT : perataan kiri

o CENTER : perataan tengah

o RIGHT : perataan kanan

Beberapa metode yang terdapat pada kelas Label dapat dilihat pada tabel

berikut:

Tabel 2.15 Method pada Label

Method Keterangan

28

Page 25: Bab II

setText(String teks) Mengganti teks pada Label sesuai dengan argumen teks.

getText() Menghasilkan string yang menyatakan teks pada Label.

c. TextField

TextField adalah kelas yang berguna untuk menciptakan objek yang

ditujukan untuk memasukkan data satu baris. Tabel berikut memperlihatkan tiga

macam konstruktornya.

Tabel 2.16 Konstruktor pada TextField

Konstruktor Keterangan

TextField() Membuat objek TextField dengan nilai awal sama string

kosong.

TextField(String teks) Membuat objek TextField dengan nilai awal sama string

teks

TextField(String teks,

Int kolom)

Membuat objek TextField dengan nilai awal sama string

teks dan jumlah kolom sebanyak kolom.

Tabel 2.17 Method pada TextField

Method Keterangan

setText(String t) Menentukan teks yang ditampilkan pada TextField.

getText() Memperoleh teks pada TextField.

addActionListener(

ActionListener t)

Memasang penangan kejadian.

d. Checkbox

Checkbox adalah komponen yang biasa digunakan untuk memilih salah

satu pilihan di antara dua kemungkinan. Konstruktor kelas ini dapat dilihat pada

tabel berikut:

Tabel 2.18 Konstruktor Kelas Checkbox

Konstruktor Keterangan

29

Page 26: Bab II

Checkbox() Menciptakan objek Checkbox tanpa label dan nilai

keadaan kotak cek diisi dengan false.

Checkbox (String teks) Menciptakan objek Checkbox dengan label berupa

teks dan nilai keadaan kotak cek diisi dengan false.

Checkbox (String teks,

Boolean keadaan)

Menciptakan objek Checkbox dengan label berupa

teks dan nilai keadaan kotak cek diisi dengan nilai

pada keadaan.

Checkbox (String teks,

Boolean keadaan,

CheckboxGroup grup)

Menciptakan objek Checkbox dengan label berupa

teks dan nilai keadaan kotak cek diisi dengan nilai

pada keadaan. Selain itu, kotak cek akan diletakkan

pada grup kotak cek grup.

Checkbox (String teks,

CheckboxGroup grup,

Boolean keadaan)

Serupa dengan konstruktor di atas, tetapi biasa

digunakan untuk membentuk tombol radio.

Beberapa metode yang tersedia pada kelas Checkbox dapat dilihat pada

tabel berikut:

Tabel 2.19 Method pada Checkbox

Method Keterangan

setLabel(String teks) Mengubah Label

setCheckboxGroup(Ch

eckboxGroup g)

Mengatur kotak cek ini agar menjadi bagian dari grup

kotak cek g.

addItemListener(Item

Listener)

Menambahkan penangan kejadian.

e. CheckboxGroup

CheckboxGroup adalah wadah yang mengelompokkan sejumlah kotak

cek yang mempunyai sifat hanya satu kotak cek yang dalam keadaan terpilih.

Konstruktornya berbentuk seperti berikut :

CheckboxGroup();

30

Page 27: Bab II

Beberapa metode penting yang dimiliki oleh CheckboxGroupdapat dilihat pada

tabel berikut:

Tabel 2.20 Method pada CheckboxGroup

Method Keterangan

getSelectedCheckbox() Menghasilkan objek berkelas Checkbox yang

menyatakan kotak cek yang sedang dipilih.

setSelectedCheckbox

(Checkbox cb)

Mengatur keadaan kotak cek cb menjadi tercentang

sedangkan yang lain menjadi tidak terpilih.

2.5.15. Pemrograman Swing

Swing merupakan cara lain selain AWT untuk mengimplementasikan

pemrograman window selain menggunakan AWT. Swing dikemas dalam paket

bernama javax.swing.

2.5.15.1. JLabel

JLabel merupakan komponen yang digunakan untuk menampilkan teks

yang pendek atau gambar atau keduanya. Komponen Label memiliki konstruktor

sebagai berikut:

Tabel 2.21 Konstruktor JLabel

Konstruktor

JLabel()

Menciptakan objek JLabel tanpa gambar dan tanpa teks

JLabel(Icon gbr)

Menciptakan objek JLabel dengan gambar tetapi tanpa teks

JLabel(String str)

Menciptakan objek JLabel dengan teks tetapi tanpa gambar

JLabel(String str, Icon gbr, int pengaturanHorizontal)

Menciptakan objek JLabel dengan gambar dan teks serta diatur dengan

31

Page 28: Bab II

pengaturan horizontal

JLabel(String str, Icon gbr, int pengaturanVertikal)

Menciptakan objek JLabel dengan gambar dan teks serta diatur dengan

pengaturan vertikal

2.5.15.2. JButton

Kelas JButton berguna untuk membuat objek tombol yang dapat

dilengkapi dengan judul tombol dan gambar, selain itu JButton merupakan

komponen yang dapat menghasilkan suatu event jika tombol diklik oleh user.

Komponen JButton memiliki konstruktor sebagai berikut:

Tabel 2.22 Konstruktor JButton

Konstruktor

JButton()

Menciptakan objek JButton tanpa gambar dan tanpa teks

JButton(Icon gbr)

Menciptakan objek JButton dengan gambar tetapi tanpa teks

JButton(String str)

Menciptakan objek JButton dengan teks tetapi tanpa gambar

JButton(String str, Icon gbr)

Menciptakan objek JLabel dengan gambar dan teks

2.5.15.3. JTextField

JTextField merupakan objek yang berguna untuk memasukkan suatu

nilai atau mengedit data satu baris. Komponen JTextField memiliki konstruktor

sebagai berikut:

Tabel 2.23 Konstruktor JTextField

Konstruktor

JTextField()

Menciptakan objek JTextField baru tanpa nilai awal String

JTextField(String str)

Menciptakan objek JButton dengan gambar tetapi tanpa teks

32

Page 29: Bab II

JTextField(String str,int Kolom)

Menciptakan objek JButton dengan teks tetapi tanpa gambar

JTextField( int Kolom)

Menciptakan objek JLabel dengan gambar dan teks

JTextField(Document doc, String str, int Kolom)

Menciptakan objek JButton dengan teks tetapi tanpa gambar

2.5.15.4. JTextArea

JTextArea adalah kelas yang memungkunkan menyajikan teks yang

terdiri dari beberapa baris. Tabel 2.24 memperlihatkan beberapa konstruktornya.

Tabel 2.24 Konstruktor JTextArea

Konstruktor

JTextArea()

Menciptakan objek JTextArea dengan nilai awal string kosong

JTextArea(String teks)

Menciptakan objek JTextArea dengan nilai awal string teks

JTextArea(String teks, int baris, int kolom)

Menciptakan objek JTextArea dengan nilai awal string teks, jumlah

kolom sebanyak kolom, dan baris sebanyak baris

JTextArea(int baris, int kolom)

JTextArea dengan nilai awal string kosong, jumlah kolom sebanyak

kolom, dan baris sebanyak baris

2.5.15.5. JRadioButton

RadioButton adalah suatu komponen pada swing yang digunakan untuk

membuat suatu pilihan, dan JRadioButton ini harus disatukan dalam ButtonGroup

dengan metode add().Contoh :

JRadioButton but1=new JRadioButton(“satu”);

JRadioButton but1=new JRadioButton(“satu”);

ButtonGroup bg=new ButtonGroup(“satu”);

bg.add(but1);

bg.add(but2);

JRadioButton disatukan dengan ButtonGroup agar user hanya dapat memilih satu

33

Page 30: Bab II

dari beberapa pilihan.

Tabel 2.25 Konstruktor JRadioButton

Konstruktor

JRadioButton()

Menciptakan objek JRadioButton baru tidak terpilih, tanpa teks dan gambar

JRadioButton (Icon ikon)

Menciptakan objek JRadioButton baru tidak terpilih dengan gambar dan

tanpa teks

JRadioButton (Icon ikon, boolean kepilih)

Menciptakan objek JRadioButton baru dengan menetapkan kondisi terpilih

atau tidak dengan gambar tetapi tanpa teks

JRadioButton ( String str)

Menciptakan objek JRadioButtonl baru tidak terpilih dengan teks dan tanpa

gambar

JRadioButton (String str, boolean kepilih)

Menciptakan objek JRadioButton dengan teks tetapi tanpa gambar dan

dengan menetapkan kondisi terpilih atau tidak

JRadioButton (String str, icon ikon)

Menciptakan objek JRadioButton dengan teks dan gambar tetapi tidak

terpilih

JRadioButton (String str, icon ikon, boolean kepilih)

JRadioButton dengan teks gambar dan dengan menetapkan kondisi

2.5.15.6. JOptionPane

JOptionPane berguna pada untuk menampilkan suatu kotak dialog

kepada user, baik itu berupa pesan, konfirmasi ataupun meminta suatu input

kepada user. Untuk menggunakan JOptionPane tidak perlu memanggil

konstruktornya, cukup dengan pemanggilan metodenya saja.

2.6. J2ME

J2ME merupakan lingkungan pengembangan yang didesain untuk

meletakkan perangkat lunak Java pada barang elektronik beserta pendukungnya.

34

Page 31: Bab II

Pada J2ME, jika perangkat lunak berfungsi baik pada perangkat tertentu maka

belum tentu juga berfungsi baik pada perangkat lainnya. J2ME biasa digunakan

pada telepon selular, pager, personal digital assistant (PDA) dan sejenisnya.

J2ME adalah bagian dari J2SE, karena itu tidak semua library yang ada

pada J2SE dapat digunakan pada J2ME. Tetapi J2ME mempunyai beberapa

library khusus yang tidak dimiliki oleh J2SE.

Teknologi J2ME juga memiliki beberapa keterbatasan, terutama jika

diaplikasikan pada perangkat selular. J2ME sangat tergantung pada perangkat

yang digunakan, bisa dari segi merk ponsel maupun dari kemampuan ponsel, dan

dukungannya terhadap teknologi J2ME.

2.6.1. Konfigurasi J2ME

Konfigurasi merupakan Java library minimum dan kapabilitas yang

dipunyai para pengembang J2ME, yang maksudnya sebuah mobile device dengan

kemampuan java akan dioptimalkan untuk memiliki konfigurasi yang sesuai.

Konfigurasi hanyalah mengatur hal-hal tentang kesamaan sehingga dapat

dijadikan ukuran kesesuaian antar device. Misalnya sebuah lampu sepeda

dirancang sedemikian rupa sehingga dapat digunakan oleh berbagai jenis sepeda.

J2ME configuration mendefinisikan lingkungan kerja aplikasi. Oleh karena setiap

perangkat memiliki fitur dan spesifikasi yang berbeda-beda, maka diperlukan

J2ME configuration yang menyediakan pustaka standar dari sebuah perangkat.

Dengan konfigurasi kita dapat menentukan beberapa hal yang perlu diperhatikan

dalam pengembangan aplikasi yang berjalan di perangkat mobile (ponsel, PDA,

dll), misalnya memori, paparan (display), konektifitas jaringan dan kemampuan

pemrosesannya. Dalam J2ME telah didefinisikan dua buah konfigurasi yaitu

CLDC (Connected Limited Device Configuration) untuk perangkat kecil dan CDC

(Connected Device Configuration) untuk perangkat yang lebih besar.

2.6.2. Profil J2ME

Profil berbeda dengan konfigurasi, profil membahas sesuatu yang spesifik

untuk sebuah perangkat. Sebagai contoh misalnya, sebuah sepeda dengan merk

35

Page 32: Bab II

tertentu tentu mempunyai ciri spesifik dengan sepeda lainnya. Profil merupakan

ekstensi dari konfigurasi. Profil menyediakan kepustakaan untuk pengembang

yang digunakan untuk menulis aplikasi untuk jenis piranti tertentu yang dituju.

Profil merupakan bagian perluasan dari konfigurasi. Artinya, selain sekumpulan

kelas yang terdapat pada konfigurasi, terdapat juga kelas-kelas spesifik yang

didefinisikan lagi di dalam profil. Dengan kata lain, profil akan membantu secara

fungsional yaitu dengan menyediakan kelas-kelas yang tidak terdapat di level

konfigurasi. Dalam J2ME terdapat dua buah profil yaitu MIDP dan Foundation

Profile. Sebagai contoh, Mobile Information Device Profile (MIDP)

mendefinisikan SPI untuk komponen antarmuka pengguna, input dan event

handling, persistent storage, ukuran layar, dan keterbatasan memori.

MIDP atau Mobile Information Device Profile adalah spesifikasi untuk

sebuah profil J2ME. MIDP memiliki lapisan diatas CLDC seperti digambarkan

pada gambar diatas. MIDP juga memiliki API tambahan untuk daur hidup

aplikasi, antarmuka, jaringan, dan penyimpanan persistent. Pada saat ini terdapat

MIDP 1.0 dan MIDP 2.0. Fitur tambahan MIDP 2.0 dibandingkan MIDP 1.0

adalah API untuk multimedia. Pada MIDP 2.0 terdapat dukungan memainkan

tone, tone sequence, dan file WAV walaupun tanpa adanya Mobile Media API

(MMAPI). Perbandingan antara MIDP 1.0 dan MIDP 2.0 dapat dilihat pada tabel

2.2 dibawah ini.

2.7. GUI (Graphical User Interface) pada J2ME

GUI (Graphical User Interface) merupakan sebutan untuk antarmuka

aplikasi. Untuk selanjutnya disini, GUI hanya akan disebut dengan ‘user

interface’ atau UI. Kebutuhan user interface untuk aplikasi yang berada dalam

peralatan-peralatan kecil seperti telepon selular, PDA, maupun pager tentu akan

berbeda dengan kebutuhan pada saat kita membuat aplikasi desktop (aplikasi

untuk PC). Sebagai contoh, pada aplikasi alat kita tidak melihat adanya mouse

yang digunakan sebagai media untuk melakukan input, namun posisinya telah

digantikan oleh keypad (tombol-tombol yang terdapat pada HP, PDA ataupun

pager).

36

Page 33: Bab II

Kelas-kelas dasar untuk kebutuhan tersebut disimpan di dalam konfigurasi

CLDC, yang harus dilengkapi di bagian profil. Jadi CLDC sendiri sebenarnya

tidak mendefinisikan kelas-kelas yang dibutuhkan untuk fungsional GUI. Adapun

kelas-kelas resmi yang diperlukan untuk pembuatan GUI dalam platform J2ME

tersebut dikembangkan oleh sebuah komunitas yang dinamakan JCP (Java

Community Process) dan telah dimasukkan ke dalam bagian profil, seperti MIDP.

Jadi kelas-kelas yang terdapat pada sebuah profil bukan didasarkan pada AWT

(Abstract Window Toolkit).

Semua kelas-kelas GUI yang terdapat dalam MIDP tersimpan dalam suatu

paket yang dinamakan dengan lcdui (javax.microedition.lcdui). dengan

mengimpor paket tersebut, maka para programmer MIDlet dapat

mengembangkan aplikasi-aplikasi secara lebih mudah dan cepat.

2.7.1. Struktur GUI di dalam MIDP

Struktur GUI di dalam MIDP dikelompokkan menjadi dua bagian, yaitu

highlevel API (didasarkan pada pembentukan window/widget) dan low-level API

(didasarkan pada pembentukan canvas dan pixel). Penggunaan model high-level

tentu jauh lebih mudah dan cepat bila dibandingkan dengan model low-level.

MIDP User Interface API memiliki API level tinggi dan level rendah. API

level rendah berbasiskan penggunaan dari kelas abstrak Canvas, sedangkan kelas

API level tinggi antara lain Alert, Form, List, dan TextBox yang merupakan

ekstensi dari kelas abstrak Screen. Arsitektur user interface MIDP dapat dilihat

pada gambar 2.5 dibawah ini.

37

Page 34: Bab II

Gambar 2.7 Arsitektur User Interface MIDP

2.7.2. Paket javax.microdediton.lcdui

Semua kelas-kelas yang ada pada GUI di dalam MIDP tersimpan dalam

paket lcdui. Maka untuk menggunakan kelas-kelas tersebut kita harus mengimpor

paket lcdui ke dalam aplikasi yang kita buat, yaitu dengan menggunakan sintax

berikut :

import javax.microedition.lcdui.*;

Paket lcdui itu sendiri terdiri dari beberapa buah interface dan kelas.

Berikut ini tabel-tabel yang akan menunjukkan daftar interface dan kelas yang

dimaksud.

Tabel 2.26 Daftar interface di dalam Paket lcdui

Interface Keterangan

Choice Mendefinisikan API untuk komponen user interface

yang mengimplementasikan pemilihan dari sejumlah

pilihan yang didefinisikan.

CommandListener Digunakan oleh aplikasi yang perlu menerima event-

event level tinggi.

ItemStateListener Digunakan oleh aplikasi yang perlu menerima event

38

Page 35: Bab II

yang mengindikasikan perubahan keadaan (state) dari

item yang terdapat pada objek Form.

Tabel 2.27 Daftar Kelas di dalam Paket lcdui

Kelas Keterangan

Alert Layar yang menampilkan data kepada

user dan menunggu untuk periode

waktu tertentu sebelum kembali ke

layar sebelumnya.

AlertType Mengindikasikan tipe-tipe dari objek

Alert yang akan ditampilkan.

Canvas Kelas dasar yang digunakan oleh

aplikasi-aplikasi yang membutuhkan

event-event level rendah maupun untuk

proses penggambaran.

ChoiceGroup Sekumpulan elemen pemilihan yang

ditempatkan dalam form.

Command Konstruksi yang membungkus

informasi-informasi tentang aksi yang

dilakukan oleh user.

CustomItem Digunakan untuk membuat element user

interface baru yang akan ditempatkan

pada sebuah form.

DataField Komponen yang digunakan untuk

mempresentasikan tanggal dan waktu.

Display Merepresentasikan manager tampilan.

Displayable Objek yang memiliki kemampuan untuk

ditempatkan pada layar tampilan.

Font Merepresentasikan format huruf yang

akan ditampikan ke layar.

Form Objek layar yang ditempati oleh item-

39

Page 36: Bab II

item lain.

Gauge Mengimplementasikan tampilan grafis

yang menunjukkan nilai tertentu dan

ditempatkan di dalam sebuah form.

Graphics Menyediakan kemampuan

penggambaran pada objek Canvas.

Image Menyimpan data gambar.

ImageItem Menyediakan control layout pada

gambar-gambar yang ditempatkan

dalam sebuah form.

Item Kelas dasar untuk komponen-komponen

yang dapat ditempatkan ke dalam

sebuah form.

List Layar yang berisi daftar pilihan.

Screen Kelas dasar dari semua komponen-

komponen layar dalam user interface

level tinggi.

StringItem Item yang berisi string untuk kemudian

ditempatkan di atas form.

TextBox Layar yang mengizinkan user untuk

menyunting atau memanipulasi teks.

TextField Komponen untuk memasukkan atau

menyunting teks dan ditempatkan di

atas form.

Ticker Bagian teks yang berjalan secara terus-

menerus pada layar tampilan. Setiap

tipe layar dapat disertai dengan objek

Ticker, kecuali Canvas.

2.8. MIDlet

40

Page 37: Bab II

MIDlet adalah aplikasi yang ditulis unutk MIDP. Aplikasi MIDlet adalah

bagian dari kelas javax.microedition.midlet.MIDlet yang didefinisikan pada

MIDP. MIDlet berupa sebuah kelas abstrak yang merupakan sub kelas dari bentuk

dasar aplikasi sehingga antarmuka antara aplikasi J2ME dan aplikasi manajemen

pada perangkat dapat terbentuk.

2.8.1. Daur Hidup (LifeCycle) MIDlet

MIDlet terdiri dari beberapa metode yang harus ada yaitu constructor (),

protected void startApp () throws MIDletStateChangeException, protected void

pauseApp (), protected void destroyApp (Boolean unconditional) throws

MIDletStateChangeException. Daur hidup (Lifecycle) MIDlet dapat dilihat pada

gambar 2.6 dibawah ini.

Gambar 2.8 Daur Hidup (Lifecycle) dari Sebuah MIDlet

Penjelasan dari daur hidup MIDlet tersebuat adalah sebagai berikut:

Ketika MIDlet dijalankan maka akan diinisialisasikan dengan kondisi pause

dan menjalankan method pauseApp().

Apabila terjadi kesalahan selama konstruksi MIDlet, MIDlet akan berpindah

ke state “Destroy”, dan MIDlet batal diciptakan dengan jalan menjalankan

method destroyApp().

41

Page 38: Bab II

Kondisi berikutnya adalah fungsi MIDlet dijalankan, yaitu pada startApp().

Metode yang ada tersebut diimplementasikan sebagai protected, hal ni

dimaksudkan agar MIDlet lain tidak dapat memanggil metode tersebut.

Pada saat user keluar dari MIDlet, maka metode destroyApp() akan

dijalankan sebelum MIDlet benar-benar tidak berjalan lagi, destroyApp()

akan dipanggil notifyDestroyed(), dan notifyDestroyed() akan memberitahu

platform untuk menterminasi MIDlet dan membersihkan semua sumber

daya yang mengacu pada MIDlet.

Dalam implementasinya, MIDlet memiliki struktur direktori sebagai

berikut:

src

Menyimpan source code unutk MIDlet dan kelas lain yang diperlukan.

res

Menyimpan sumber daya yang dibutuhkan oleh MIDlet, seperti misalnya

gambar icon, suara ataupun video.

lib

Menyimpan file JAR atau ZIP yang berisi library tambahan yang

dibutuhkan MIDlet.

bin

Menyimpan file JAR, JAD, dan fle manifest yang berisi muatan komponen

MIDlet.

2.9. Sekilas Mengenai Java Server Page (JSP)

JavaServer Pages atau JSP merupakan salah satu bagian dari J2EE (Java 2

Enterprise Edition). JSP dibangun di atas Servlet dan bertujuan untuk menambah

efisiensi. Kelebihan dari JSP yaitu:

JSP mengizikan pemakaian pustaka tag standar dan tag buatan sendiri

JSP dikompilasi terlebih dahulu sehingga proses server lebih efisien

JSP dapat dikombinasikan dengan Servlet

JSP adalah bagian dari J2EE sehingga dapat digunakan dalam aplikasi

enterprise

42

Page 39: Bab II

Pada saat klien mengirimkan request ke JSP maka kontainer web akan

mengecek apakah JSP telah terkompilasi, jika belum maka akan dikompilasi,

kemudian seperti halnya servlet, JSP diinisialisasi, memproses request, dan akan

menjalankan destroy ketika kontainer web dimatikan.

2.10. Sintaks JSP

JSP memiliki tag standar yang bisa disebut dengan JSP Standard Tag

Library (JSTL), tapi JSP juga mengizinkan tag-tag yang dapat dibuat sendiri

sesuai kebutuhan (custom element). Elemen standar pada JSP dapat

dikelompokkan menjadi tiga yaitu:

elemen perintah (directive element)

elemen skrip (scripting element)

elemen aksi (action element)

2.10.1. Elemen Perintah (Directive Element)

Elemen perintah (directive element) adalah elemen untuk

menspesifikasikan informasi tentang halaman yang bersangkutan. Secara umum

tag elemen perintah sebagai berikut:

<%@ elemen perintah (atribut=“nilai”)* %>

di mana tanda bintang (*) berarti elemen dapat memiliki atribut yang

diulang sebanyak nol atau beberapa kali. Tag-tag yang termasuk dalam deklarasi

elemen perintah sebagai berikut:

Tabel 2.28 Tag-Tag Deklarasi Elemen Perintah

Tag Keterangan

<%@ page

(atribut=“nilai”)*

%>

atau

<%@ page

atributl=“nilai

1”

mendefinisikan atribut halaman seperti error,

session, dan keperluan buffering

atribut yang dimiliki:

Atribut Keterangan

Language menspesifikasikan bahasa

43

Page 40: Bab II

Tag Keterangan

atribut2=“nilai 2”

.... %>yang digunakan dengan nilai

standar “Java”

info informasi mengenai JSP, nilai

standarnya berupa string

tergantung pada kontainer

web

contentType menspesifikasikan data yang

dikembalikan ke browser

dengan nilai standar

“text/html;charset=I

SO8859-1”

extends menspesifikasikan superclass

JSP dengan nilai standar none

import jika diperlukan mengimpor

pustaka lain dengan nilai

stazdar none

buffer besar penggunaan buffer

dengan nilai standar 8192

autoFlush metode flush untuk buffer

dengan nilai standar “true”

session diisi dengan true jika

memakai session dengan nilai

standar “true”

isThreadSafe mengizinkan penggunaan

banyak thread jika bernilai

true dengan nilai standar

“true”

errorPage berisi true jika JSP

merupakan halaman yang

44

Page 41: Bab II

Tag Keterangan

menangani error dengan

nilai standar “false”

<%@ include ... menyatakan file yang di-include

atau :

<%@ include

file=“includes/header.html” %>

<%

out.println(“<BODY>“) ;

%>

<%@ include

file=“includes/footer.html” %>

<%@ taglib … mendeklarasikan pustaka tag (tag library) berisi aksi

custom yang digunakan pada halaman web (custom

tag)

2.10.2. Elemen Skrip (Scripting Element)

Elemen skrip (scripting element) mengizinkan programmer memasukkan

kode Java pada kode JSP. Berikut adalah beberapa elemen skrip yang dapat

digunakan pada JSP:

Sintaks mendeklarasikan metode dan variabel sebagai berikut:

Sintaks pemakaian metode dan variabel tanpa ditampilkan hasil atau

nilainya sebagai berikut:

<%Pemakaian_metode_dan_variabel%>

45

Page 42: Bab II

Sintaks menampilkan variabel nilai sebagai berikut:

<%= variabel nilai atau metode

%>

Sintaks penulisan komentar pada JSP sebagai berikut:

<%!/ / komentar

%>

2.10.3. Elemen Aksi (Action Element)

Elemen aksi merespon aksi yang berdasarkan informasi yang dibutuhkan

halaman JSP ketika diminta oleh browser. Tag-tag yang termasuk dalam deklarasi

elemen aksi standar sebagai berikut:

Tabel 2.29 Tag-Tag Deklarasi Elemen Aksi Standar

Tag Keterangan

< jsp : useBean> membuat komponen JavaBeans tersedia di

halaman web

<jsp: getProperty> mengambil sebuah nilai properti dari sebuah

komponen JavaBeans dan

mengikutsertakannya dalam respon

pola:

<jsp:geLProperty name=“idBean”

property=“namaProperti”/>

<jsp:setProperty> mengeset nilai properti komponen JavaBeans

<jsp:include > mengikutsertakan respon dari servlet atau JSP

pada proses request (hampir sama dengan

elemen perintah include)

atau jika ingin melewatkan informasi di

dalamnya akan menjadi

46

Page 43: Bab II

<jsp:include

page=“relativeURL”

flush=“true”>

( <jsp:param ... /> )*

</jsp:include>

<jsp:forward> mengirimkan lagi proses request ke servlet

atau JSP (menterminasi eksekusi JSP)

<jsp:param> menambahkan sebuah nilai parameter ke

penanganan request servlet atau JSP lain

<jsp:plugin> menggenerasi HTML yang berisi elemen

OBJECT atau EMBED yang dibutuhkan

untuk mengeksekusi sebuah applet dengan

perangkat plug-in dari Java

<jsp:params> memiliki fungsi sama dengan tag param pada

kode HTML applet, hanya dapat digunakan di

dalam tag <jsp:plugin>

<jsp:fallback> menyediakan teks alternatif jika browser tidak

mendukung elemen OBJECT dan

EMBED HTML, hanya dapat digunakan di

dalam tag <jsp:plugin>

2.11. MySQL

MySQL merupakan software database yang termasuk paling popular

dalam lingkungan linux, kepopuleran ini ditunjang karena performansi query dari

databasenya yang sangat cepat dan jarang bermasalah.

Saat ini, MySQL telah tersedia juga dalam lingkungan Windows, software

MySQL dilingkungan windows dipasang pada direktori c:\mysql\bin adalah

direktori yang berisi daftar modul executable dari software MySQL.

Berikut akan ditampilkan perintah-perintah yang berhubungan dengan

pembuatan database dan table serta cara melakukan manipulasi.

Perintah untuk membuat database :

47

Page 44: Bab II

CREATE DATABASE [IF NOT EXISTS] db_name;

Perintah untuk mengaktifkan Database :

USE db_name;

Perintah untuk menghapus database :

DELETE db_name;

Perintah untuk membuat table :

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name;

Perintah utnuk menghapus table :

DELETE TABLE [IF EXISTS] tbl_name [, tbl_name,...] [RESTRICT| CASCADE];

Perintah mengetahui struktur isi tabel :

DESCRIBE tbl_name;

Menampilkan isi tabel :

SELECT * FROM tbl_name;

2.12. Diagram Alur (Flowchart)

Diagram alur atau yang biasa disebut flowchart adalah sebuah diagram

yang memiliki alur yang digunakan untuk menggambarkan alur logika atau urutan

langkah dari suatu program.

Flowchart dapat berupa satu diagram alur lengkap dari suatu aktivitas dan

bisa juga menggambarkan hanya bagain tertentu dari aktivitas tersebut. Hal ini

dilakukan bila algoritma begitu detail dan kompleks, sehingga satu halaman kertas

tidak mampu untuk melukiskan keseluruhan flowchart.

Bila ia menggambarkan suatu aktivitas, flowchart tersebut dimulai dengan

blok “mulai” dan diakhiri dengan blok “selesai”. Bila hanya sebagain, flowchart

dimulai dan diakhiri dengan lingkaran kecil serta diberi notasi abjad atau angka

yang menunjukkan sambungan dari bagian yang lain.

Tabel 2.30 Simbol-Simbol Diagram Alur

48

Page 45: Bab II

2.13. Struktur Navigasi

Struktur navigasi adalah alur cerita dari sebuah program. Terdapat empat

jenis struktur navigasi yang biasa digunakan yaitu navigasi linier, navigasi hirarki,

navigasi non linier, dan navigasi komposit (campuran).

2.13.1. Struktur Navigasi Linier

Struktur navigasi linier (satu alur) merupakan suatu struktur navigasi yang

hanya mempunyai satu rangkain cerita terurut. Struktur navigasi ini menampilkan

satu demi satu tampilan layer secara terurut sesuai urutannya.

Gambar 2.9 Struktur Navigasi Linier

2.13.2. Struktur Navigasi Non Linier

Struktur navigasi non linier merupakan pengembangan dari struktur

navigasi linier. Pada struktur navigasi ini dimungkinkan adanya percabagan,

namun percabangan yang dibuat pada struktur navigasi non linier ini berbeda

49

Page 46: Bab II

dengan percabangan yang dibuat pada struktur navigasi hirarki, karena tiap tiap

tampilan mempunyai kedudukan sama yaitu tidak ada menu utama dan halaman

pendukung.

Gambar 2.10 Struktur Navigasi Non Linier

2.13.3. Struktur Navigasi Hirarki

Struktur navigasi hirarki merupakan suatu struktur navigasi yang

memperbolehkan percabangan untuk menampilkan data atau gambar. Tampilan

menu utama disebut dengan master page. Menu utama ini memiliki percabangan

yang disebut pendukung, dapat disebut juga dengan slave page.

Gambar 2.11 Struktur Navigasi Hirarki

2.13.4. Struktur Navigasi Komposit

Struktur navigasi komposit merupakan gabungan dari ketiga struktur

navigasi sebelumnya, yaitu struktur navigasi linier, hirarki dan non linier. Struktur

navigasi ini disebut juga struktur navigasi campuran atau bebas.

50

Page 47: Bab II

Gambar 2.12 Struktur Navigasi Komposi

2.14. Algoritma RSA (Ron Rivest, Adi Shamir, Leonard Adleman)

Dari sekian banyak algoritma kriptografi kunci-publik yang pernah dibuat,

algoritma yang paling populer adalah algoritma RSA. Algoritma ini melakukan

pemfaktoran bilangan yang sangat besar. Oleh karena alasan tersebut RSA

dianggap aman. Untuk membangkitkan dua kunci, dipilih dua bilangan prima

acak yang besar. Algoritma RSA dibuat oleh 3 orang peneliti dari MIT

(Massachussets Institute of Technology) pada tahun 1976, yaitu : RON (R)ivest,

ADI (S)hamir, dan Leonard (A)dleman. RSA mengekspresikan teks-asli yang

dienkripsi menjadi blok-blok yang mana setiap blok memiliki nilai bilangan biner

yang diberi symbol “n”, blok teks-asli “M” dan blok teks-kode “C”. Untuk

melakukan enkripsi pesan “M”, pesan dibagi ke dalam blok-blok numeric yang

lebih kecil daripada “n” (data biner dengan pangkat terbesar), jika bilangan prima

yang panjangnya 200 digit, dapat ditambah beberapa bit 0 di kiri bilangan untuk

menjaga agar pesan tetap kurang dari nilai “n”.

Besaran yang digunakan pada algoritma RSA :

1. p dan q bilangan prima (rahasia)

2. r = p.q (tidak rahasia)

3. (r) = (p – 1)(q – 1) (rahasia)

4. PK (kunci enkripsi) (tidak rahasia)

5. SK (kunci dekripsi) (rahasia)

6. X (teks-asli) (rahasia)

7. Y (teks-kode) (tidak rahasia)

Agoritma RSA didasarkan pada teorema Euler yang menyatakan bahwa :

a(r) 1 (mod r) ………………………………………………………………..(1)

yang dalam hal ini :

1. a harus relatif prima terhadap r.

51

Page 48: Bab II

2. (r) = r(1 – 1/p1)(1 – 1 /p2) … (1 – 1/pn), yang dalam hal ini p1,p2, … , pn

adalah faktor prima dari r.

(r) adalah fungsi yang menemukan berapa banyak bilangan 1,2,3,…,r yang

relatif prima terhadap r.

Berdasarkan sifat am bm (mod r) untuk m bilangan bulat ≥ 1 maka

persamaan (1) dapat ditulis menjadi :

am(r) 1m (mod r)

atau

am(r) 1m (mod r) ……………………………………………………..(2)

Bila a diganti dengan X maka persamaan (2) menjadi :

X m(r) 1m (mod r) …………………………………………………….(3)

Berdasarkan sifat ac bc (mod r) maka bila persamaan (3) dikali dengan X

menjadi :

X m(r)+1 X (mod r) ……………………………………………………(4)

yang dalam hal ini X relative prima terhadap r.

Misalkan SK dan PK dipilih sedemikian rupa sehingga

SK . PK 1 (mod (r)) ………………………………………………..(5)

atau

SK . PK = m (r) +1 …………………………………………………..(6)

Sulihkan (6) ke dalam persamaan (4) menjadi :

XSK.PK X (mod r) ……………………………………………………(7)

Persamaan (7) dapat ditulis kembali menjadi :

(XPK)SK X (mod r) ………………………………………………….(8)

yang artinya perpangkatan X dengan PK diikuti dengan perpangkatan

dengan SK menghasilkan X semula.

Berdasarkan persamaan (8) maka enkripsi dan dekripsi dirumuskan sebagai

berikut :

EPK(X) = Y = XPK mod r ……………………………………………..(8)

DSK(Y) = X = YSK mod r ……………………………………………..(9)

52

Page 49: Bab II

Karena SK.PK = PK.SK, maka enkripsi diikuti dengan dekripsi ekuivalen dengan

dekripsi diikuti enkripsi:

ESK(DSK(X)) = DSK (EPK (X)) = XPK mod r …………………………(10)

Oleh karena XPK mod r (X + mr) PK mod r untuk sembarang bilangan

bulat m, maka tiap teks-asli X, X + r, X + 2r, … menghasilkan teks-kode yang

sama. Dengan kata lain, transformasinya adalah dari banyak ke satu. Agar

transformasinya satu ke satu maka X harus dibatasi dalam himpunan {0, 1, 2, .., r

– 1} sehingga enkripsi dan dekripsi tetap benar seperti pada persamaan (8) dan

(9).

2.15. Letak Kemanan RSA

Keamanan algoritma RSA terletak pada tingkat kesulitan dalam

memfaktorkan bilangan non-prima menjadi faktor primanya, yang dalam hal ini r

= p x q. Sekali r berhasil difaktorkan menjadi p dan q maka (r) = (p – 1)(q – 1)

dapat dihitung. Selanjutnya, karena kunci enkripsi PK diumumkan (tidak rahasia)

maka kunc dekripsi SK dapat dihitung dari persamaan PK.SK 1 (mod (r)).

Penemu algoritma RSA menyarankan agar panjang nilai p dan q lebih dari

100 digit. Dengan demikian hasil kali r = p x q akan lebih dari 200 digit. Menurut

Rivest dan kawan-kawan, usaha untuk mencari faktor bilangan 200 digit

membutuhkan waktu komputasi selama 4 milyar tahun! (dengan asumsi bahw

algortima pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini

dan komputer yang dipakai mempunyai kecepatan 1 (milidetik). Algortima RSA

yang memfaktorkan bilangan yang besar belum ditemukan. Inilah yang membuat

algoritma RSA tetap dipakai. Selagi belum ditemuka algoritma yang mangkus

untuk memfaktorkan bilangan bulat menjadi faktor primanya maka algoritma

RSA tetap direkomendasikan untuk digunakan dalam penyandian pesan.

53