IMPLEMENTASI ALGORITMA RSA UNTUK ENKRIPSI DAN DEKRIPSI MENGGUNAKAN BAHASA PEMROGRAMAN JAVA DI NETBEANS Nur Aini [1412120129] 1, Devy Afria Ningrum[1412120162] 2, Pradhipta Mahardhika [1412120283] 3. Fakultas Teknik Informatika 2012 A, Universitas PGRI Ronggolawe Tuban. Abstrak Suatu proses pengiriman data atau informasi dengan menggunakan algoritma kriptografi. Dalam suatu data dapat ditransmisikan dengan berbagai cara baik melalui sinyal diudara 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.
Abstract A process of sending data or information using cryptographic algorithms. In a data can be transmitted in various ways either through the air or the signal cable channels. The use of the transmission media allows parties who are not responsible to read and even change the content of these data, therefore it is necessary to have data encryption to secure the data transmitted. To overcome this necessary system of safeguards against known data sebgai science of cryptography. The air is getting its development of science, developed the cryptographic algorithm. One well-known algorithm is RSA algorithm. RSA uses asymmetric algorithm has two different keys, called a key pair (key pair) for encryption and decryption. The security level of RSA encryption algorithm is very dependent on the size of the cipher key, because the smaller the size of the key, then the greater the possibility of combination locks that can be uprooted with the method of checking one by one key combination or better known as Brute Force Attack. Primes generated in the RSA algorithm affect the size of the passkey. The number of primes generated in this application is 1000 pieces numbers. Keywords: visualization, cryptography, RSA algorithms, Java programming.
BAB I PENDAHULUAN Pada saat ini sistem informasi dan komunikasi semakin berkembang. Untuk kebutuhan manusia dalam melakukan komunikasi data pun semakin meningkat. Hal ini yang mempengaruhi tingkat keamanan informasi pada teknologi media transmis yang dimana tidak hanya melalui kabel, data pun juga dapat dikirim melalui media non kebel yang menggunakan udara, data dapat dikirim dari satu tempat ketempat yang lain dengan menggunkan media non kabel secara mudah. Penggunaan media transmisi memungkinkan pihak-pihak yang tidak memiliki kepentingan melihat bahkan mengubah isi data tersebut yang tentu saja membahayakan integritas data, terutama data yang bersifat sangat rahasia. Oleh karena itu, dibutuhkan suatu mekanisme yang dapat mengacak data (enkripsi) sehingga data tidak mudah dilihat dan diubah oleh pihak yang tidak memiliki kepentingan. Algoritma kiptografi berkembang sangat pesat dan penggunanya pun semakin meluas dan beragam. komputasi dan prosedur yang rumit membuat orang enggan mempelajari dan memahami algoritma kriptografi secara menyeluruh. Hal ini membuat penulis termotivasi untuk membuat sebuah program yang dapat memvisualisasikan sekaligus mensimulasikan proses yang terjadi pada sebuah algoritma kriptografi, yaitu RSA. Pemilihan algoritma RSA dikarenakan sistem penyandian algoritma ini memiliki mekanisme kerja yang cukup sederhana dan mudah dimengerti namun tetap kokoh dalam tugasnya mengamankan data. Dengan adanya sebuah aplikasi yang dapat memvisualisasikan sekaligus mensimulasikan algoritma RSA, diharapkan akan memudahkan mereka yang ingin mempelajarinya sehingga dapat menghilangkan anggapan sulitnya memahami algoritma kriptografi. Pengiriman informasi atau data yang diolah menggunkan teknik kiptografi salah satunya menggunakan algoritma dengan metode RSA
BAB II TINJAUAN PUSTAKA 2.1 Deskripsi Dan Enkripsi 2.1.1 Deskripsi Saat anda mengirimkan Surat tersebut dan diterima oleh Pacar anda, maka pacar anda akan mengubah kembali font Bookshelf symbol menjadi Font Arial agar bisa dibaca kembali. Maka Pacar anda telah melakukan yang disebut Proses Deskripsi ( Descryption ) dengan mengunakan Private Key ( karena dengan kunci yang sama, bukan Public key ) pada kasus ini keyword nya adalah Font Arial. 2.1.2 Plaintext dan Ciphertext Plaintext adalah teks yang diencode dalam format ASCII. Plain text tidak memiliki format dan informasi struktur seperti ukuran dan tipe font, warna, atau layout. Plain text biasanya digunakan antar-komputer yang tidak memiliki kesepakatan untuk saling bertukar informasi format dan layout teks. Sedangkan Ciphertext adalah bentuk setelah pesan dalam plaintext telah diubah bentuknya menjadi lebih aman dan tidak dapat dibaca. Proses mengubah plaintext menjadi ciphertext disebut encryption (enciphering), dan proses membalikkannya kembali disebut decryption (deciphering)[3]. 2.1.3 Kriptografi Secara etimologi (ilmu asal usul kata), kata kriptografi berasal dari gabungan dua kata dalam bahasa Yunani yaitu kriptos dan graphia. Kata kriptos digunakan untuk mendeskripsikan sesuatu yang disembunyikan, rahasia atau misterius. Sedangkan kata graphia berarti tulisan. Kriptografi didefinisikan sebagai ilmu dan pelajaran untuk tulisan rahasia dengan pertimbangan bahwa komunikasi dan data dapat dikodekan untuk mencegah dari mata-mata atau orang lain yang ingin mengetahui isinya, dengan menggunakan kode-kode dan aturanaturan tertentu dan metode lainnya
sehingga hanya orang yang berhak yang dapat mengetahui isi pesan sebenarnya[3]. 2.1.4 Enkripsi Enkripsi adalah proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus. atau bisa didefinisikan juga Enkripsi merupakan proses untuk mengubah plainteks menjadi chiperteks. Planteks sendiri adalah data atau pesan asli yang ingin dikirim, sedangkan Chiperteks adalah data hasil enkripsi. Enkripsi dapat diartikan sebagai kode atau chiper. Sebuah chiper mengunakan suatu algoritma yang dapat mengkodekan semua aliran data (stream) bit dari sebuah pesan menjadi cryptogram yang tidak dimengerti (unintelligible). Karena teknik chiper merupakan suatu system yang telah siap untuk di automasi, maka teknik ini digunakan dalam system keamanan computer dan jaringan. Enkripsi dimaksudkan untuk melindungi informasi agar tidak terlihat oleh orang atau pihak yang tidak berhak. Informasi ini dapat berupa nomor kartu kredit, catatan penting dalam komputer, maupun password untuk mengakses sesuatu. Deskripsi dalam dunia keamanan komputer merupakan proses untuk mengubah chiperteks menjadi plainteks atau pesan asli. Jadi Deskripsi merupakan kebalikan dari Enkripsi upaya pengolahan data menjadi sesuatu yang dapat diutarakan secara jelas dan tepat dengan tujuan agar dapat dimengerti oleh orang yang tidak langsung mengalaminya sendiri. 2.1.4.1 Kategori dari Enkripsi Dalam hal ini terdapat tiga kategori enkripsi, yaitu : a. Kunci enkripsi rahasia, artinya terdapat sebuah kunci yang digunakan untuk mengenkripsi dan juga sekaligus mendekripsikan informasi. b. Kunci enkripsi public, artinya dua kunci digunakan satu untuk proses enkripsi dan yang Lain untuk proses dekripsi. c. Fungsi one-way, atau fungsi satu arah adalah suatu fungsi dimana informasi dienkripsi
untuk menciptakan signature dari informasi asli yang bisa digunakan untuk keperluan autentikasi. Kelebihan dari Enkripsi: a. Kerahasiaan suatu informasi terjamin. b. Menyediakan autentikasi dan perlindungan integritas pada algoritma checksum/hash. c. Menanggulangi penyadapan telepon dan email Untuk digital signature. Kekurangan dari Enkripsi a. Penyandian rencana teroris. b. Penyembunyian record kriminal oleh seorang penjahat. c. Pesan tidak bisa dibaca bila penerima pesan lupa atau kehilangan kunci. diturunkan dari kunci lainnya. Oleh karena itu sistem ini sering disebut secret-key ciphersystem. Kunci yang menggunakan teknik enkripsi ini harus betul-betul dirahasiakan. b. Assymmetric Cryptosystem (Enkripsi public-key) Dalam Assymmetric cryptosystem,kunci yang digunakan terdapat dua buah. Satu kunci yang dapat dipublikasikan deisebut kunci publik (public key), satu lagi kunci yang harus dirahasiakan disebut kunci privat (private key). Secara sedehana proses tersebut diterangkan sebagai berikut : A mengirimkan pesan kepada B. A menyandikan pesannya dengan menggunakan kunci publik B. Bila B ingin membaca pesan dari A, ia harus menggunakan kunci privatnya untuk mendekripsikan pesan yang tersandikan itu. Model model Enkripsi : a. Symmetric Cryptosystem ( Enkripsi Konvensional) Dalam symmetric cryptosystem,kunci yang digunakan dalam proses enkripsi dan dekripsi adalah sama atau pada prinsipnya identik. Kunci ini pun bisa Enkripsi Menggunakan Algoritma RSA Sebagai media komunikasi umum, suatu jaringan sangat rawan terhadap penyadapan, pencurian, dan pemalsuan informasi. Proses pengiriman data pada suatu jaringan harus menjamin keamanan dan
keutuhan, jika tidak, akan terjadi kemungkinan-kemungkinan seperti yang dijelaskan sebelumnya. Untuk itu salah satu cara untuk mengamankan data dari kejadiankejadian tersebut, diperlukan penyandian terhadap data yang akan dikirim. Penyandian ini sangat penting, apalagi dalam sektor-sektor strategis seperti bisnis, perbankan, atau pemerintahan sangat memerlukan teknologi penyandian Informasi. Ilmu menyandi (kriptografi) sebetulnya adalah ilmu yang sudah dikenal bahkan semenjak jaman Julius Caesar (sebelum masehi). Ilmu ini tidak hanya mencakup teknikteknik menyandikan informasi, tetapi juga teknik untuk membongkar sandi. Enkripsi adalah suatu proses mengubah sebuah teks murni (plaintext) menjadi sebuah runtutan karakter atau data yang terlihat tidak berarti dan mempunyai urutan bit yang tidak beraturan, disebut ciphertext. Proses pengubahan kembali ciphertext menjadi plaintext disebut dekripsi. Terdapat banyak algoritma penyandian di dunia ini, yang paling banyak dipakai di dunia adalah DES dan RSA. Di samping DES dan RSA, masih ada banyak sandi lain seperti MD2 (dipakai GSM), IDEA, RC2, dll. Akan tetapi, DES dan RSA adalah yang paling populer dan paling banyak dipakai. RSA banyak dipakai oleh banyak perangkat lunak di dunia, contohnya adalah pada program browser internet MS Internet Explorer dan Netscape. Salah satu sistem penyandian yang juga banyak dipakai adalah DES (Data Encryption Standard). Mekanisme kerja RSA cukup sederhana dan mudah mengerti, tetapi kokoh. Sampai saat ini satu-satunya cara untuk mendobraknya adalah dengan cara mencoba satu persatu kombinasi kunci yang mungkin atau yang biasa disebut brute force attack. Sehingga penentuan tingkat keamanan suatu sandi dari kemungkinan dibongkar adalah seberapa panjang dari sandi (ukuran kunci) terebut. Karena jika semakin panjang suatu kode, maka semakin banyak pula kombinasi kunci yang mungkin ada. RSA sendiri dibuat pada tahun 1978. RSA adalamsingkatan dari nama para penemunya, yaitu
Ron Rivest, Adi Shamir, dan Leonard Adleman. RSAadalah salah satu algoritma penyandian yang paling banyak mengundang kontroversi, selain DES. Sejauh ini belum seorang pun yang berhasil menemukan lubang sekuriti pada DES dan RSA, tetapi tak seorangpun juga yang berhasil memberikan pembuktianilmiah yang memuaskan dari keamanan kedua teknik sandi ini. Untuk menyandi informasi dan untuk menerjemahkan pesan tersandi sebuah algoritma penyandian memerlukan sebuah data biner yang disebut kunci. Tanpa kunci yang cocok orang tidak bisa mendapatkan kembali pesan asli dari pesan tersandi. Pada DES digunakan kunci yang sama untuk menyandi (enkripsi) maupun untuk menterjemahan (dekripsi), sedangkan RSA menggunakan dua kunci yang berbeda. Isitilahnya, DES disebut sistem sandi simetris sementara RSA disebut sistem sandi asimetris. Kedua sistem ini memiliki keuntungan dan kerugiannya sendiri. Sistem sandi simetris cenderung jauh lebih cepat sehingga lebih disukai oleh sementara kalangan industri. Kejelekannya, pihak-pihak yang ingin berkomunikasi secara privat harus punya akses ke sebuah kunci DES bersama. Walaupun biasanya pihak-pihak yang terkait sudah saling percaya, skema ini memungkinkan satu pihak untuk memalsukan pernyataan dari pihak lainnya. RSA yang menggunakan algoritma asimetrik mempunyai dua kunci yang berbeda, disebut pasangan kunci (key pair) untuk proses enkripsi dan dekripsi. Kunci-kunci yang ada pada pasangan kunci mempunyai hubungan secara matematis, tetapi tidak dapat dilihat secara komputasi untuk mendeduksi kunci yang satu ke pasangannya. Algoritma ini disebut kunci publik, karena kunci enkripsi dapat disebarkan. Orang-orang dapat menggunakan kunci publik ini, tapi hanya orang yang mempunyai kunci privat sajalah yang bisa mendekripsi data tersebut. Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktorfaktor prima.pemfaktoran dilakukan untuk memperoleh kunci privat. Selama pemfaktoran bilangan besar
menjadi faktor-faktor prima belum ditemukan algoritma yang efisien, maka selama itu pula keamanan algoritma RSA tetap terjamin. Besaran-besaran yang digunakan pada Algoritma RSA: 1. p dan q bilangan prima (rahasia) 2. n = p. q (tidak rahasia) 3. ᶲ(n) = (p 1) (q-1) (rahasia) 4. e (kunci enkripsi) (tidak rahasia) 5. d(kunci dekripsi) ( rahasia) 6. m (plainteks) (rahasia) 7. c (cipherteks) (tidak rahasia) BAB III PERANCANGAN SISTEM 3.1 Mekanisme Dasar Kerja Rsa Tingkat keamanan algoritma penyandian RSA sangat bergantung pada ukuran kunci sandi tersebut (dalam bit), karena makin besar ukuran kunci, maka makin besar juga kemungkinan kombinasi kunci yang bisa dijebol dengan metode mengencek kombinasi satu persatu kunci atau lebih dikenal dengan istilah brute force attack. Jika dibuat suatu sandi RSA dengan panjang 256 bit, maka metode brute force attack akan menjadi tidak ekonomis dan sia-sia dimana para hacker pun tidak mau/sanggup untuk menjebol sandi tersebut. 3.2 Proses Pembuatan Kunci Dalam membuat suatu sandi, RSA mempunyai cara kerja dalam membuat kunci publik dan kunci privat adalah sebagai berikut : 1. Pilih dua bilangan prima p dan q secara acak, p q. Bilangan ini harus cukup besar (minimal 100 digit). 2. Hitung N = pq. Bilangan N disebut parameter sekuriti. 3. Hitung φ = (p-1)(q-1). 4. Pilih bilangan bulat (integer) antara satu dan φ (1< e < φ) yang tidak mempunyai faktor pembagi dari φ. 5. Hitung d hingga d e 1 (mod φ). Keterangan : Langkah 3 dan 4 dapat dihasilkan dengan cara algoritma Euclidean
Langkah 4 dapat dihasilkan dengan menemukan integer x sehingga d = (x(p-1)(q-1)+ 1)/e menghasilkan bilangan bulat, kemudian menggunakan nilai dari d (mod (p-1)(q-1)) Setelah melalui cara ini, maka kita akan mendapatkan kunci publik dan kunci privat. Kunci publik terdiri dari dua elemen, yaitu : Walaupun bentuk ini memperbolehkan dekripsi secara cepat dan signing menggunakan Chinese Remainder Theorem (CRT), hal ini mejadi lebih tidak aman karena bentuk ini memperbolehkan side channel attacks. Side channel attacks adalah sebuah serangan yang berdasarkan informasi yang dikumpulkan dari implementasi fisik (atau kelemahan secara fisik) dari sebuah sistem kriptografi, dibanding dengan kelemahan teoritis dari algoritmanya sendiri. Sebagai contohnya, faktor-faktor kurun waktu dari informasi, konsumsi tenaga, bahkan suara yang ditimbulkan dapat membantu mempermudah informasi yang bisa diambil untuk menjebol sistem tersebut. 3.2.1 Proses Enkripsi Pesan Misalkan pada suatu kasus si A ingin mengirim pesan m kepada si B. A mengubah m menjadi angka n < N, menggunakan protokol yang sebelumnya telah disepakati dan dikenal sebagai padding scheme. Padding scheme harus dibangun secara hati-hati sehingga tidak ada nilai dari m yang menyebabkan masalah keamanan. Contohnya, jika kita ambil contoh sederhana dari penampilan ASCII dari m dan menggabungkan bit-bit secara bersama-sama akan menghasilkan n, kemudian pessan yang berisi ASCII tunggal karakter NUL (nilai numeris 0) akan menghasilkan n = 0, yang akan menghasilkan ciphertext 0 apapun itu nilai dari e dan N yang digunakan. Maka A mempunyai nilai n dan mengetahui N dan e,yang telah diumumkan oleh B. A kemudian menghitung ciphertext c yang terkait pada n : c = n e mod N (1) Perhitungan tersebut dapat diselesaikan dengan menggunakan metode exponentation by squaring, yaitu sebuah algoritma yang dipakai untuk komputasi
terhadap sejumlah nilai integer yang besar dengan cepat. Kemudian A mengirimkan nilai c kepada B. 3.2.2 Proses Dekripsi Pesan B sudah menerima c dari A, dan mengetahui kunci privat yang digunakan B. B kemudian mengembalikan nilai n dari c dengan langkah-langkah sebagai berikut : n = c d mod N (2) Perhitungan diatas akan menghasilkan n, dengan begitu B dapat mengembalikan pesan semula m. Prosedur dekripsi bekerja karena c d (n) d (mod N) (3) Kemudian, karena ed 1 (mod p-1) dan ed 1 (mod q-1), hasil dari Fermat's little theorem. n ed n (mod p) (4) dan n ed n (mod q) (5) Karena p dan q merupakan bilangan prima yang berbeda, mengaplikasikan Chinese remainder theorem akan menghasilkan dua macam kongruen n ed n (mod pq) (6) Serta c d n (mod N) (7) Contoh Penghitungan RSA Sekarang kita mencoba suatu contoh untuk mengenal lebih dalam sistem kerja enkripisi RSA. Misalnya kita mau mengenkripsi kata SECRET dengan RSA, lalu kita dekripsi kembali ke dalam plaintext. Karena p dan q berjumlah minimal 100 digit atau lebih, nilai d dan e bisa berjumlah sama dengan 100 digit dan nilai N akan berjumlah 200 digit. Untuk itu di contoh pemakaian berikut, kita akan memakai angka-angka yang kecil agar mudah dalam penghitungan. Cara pengerjaannya adalah : 1. Kita pilih p = 3 dan q = 5 2. Hitung N = pq = 3*5 = 15 3. Nilai e harus merupakan bilangan prima yang lebih besar dan relatif dekat dengan (p-1)(q-1) = (2)(4) = 8, sehingga kita pilih e = 11. Angka 11 adalah bilangan prima terdekat dan lebih besar daripada 8 4. Nilai d harus dipilih sehingga (ed - 1) (p-1)(q-1) adalah sebuah integer. Lalu nilai (11d - 1) / [(2)(4)] =
(11d - 1) / 8 juga merupakan integer. Setelah melalui proses penghitungan, salah satu nilai yang mungkin adalah d = 3. 5. Lalu kita masukkan kata yang akan dienkripsi, SECRET. Kita akan mengkonversi string ini ke representasi desimal menggunakan nilai karakter ASCII, yang akan menghasilkan nilai ASCII 83 69 67 82 69 84 6. Pengirim akan mengenkripsi setiap digit angka pada saat yang bersamaan menggunakan nilai kunci publik (e, n) = (11,15). Lalu setiap karakterciphertext akan masuk ke persamaan. Ci = Mi d mod 15 Yang akan menghasilkan nilai digit masukan adalah 0x836967826984 yang akan dikirim sebagai 0x2c696d286924 7. Penerima akan mendekripsi setiap digit angka menggunakan nilai kunci privat (d, n) = (3, 15). Lalu, setiap karakter plaintext akan masuk persamaan. Mi = Ci 3 mod 15 String masukan yang bernilai 0x2c696d286924, akan dikonversi kembail menjadi 0x836967826984, dan akhirnya angka-angka tersebut akan diubah kembali menjadi bentuk string plaintext yang bernilai SECRET Dari contoh di atas kita dapat menangkap suatu kelemahan dari pemakaian p dan q yang bernilai kecil yaitu bisa kita lihat di digit ke- 4, ke-6 dan ke-9 tidak berubah saat dienkripsi, dan nilai 2 dan 8 dienkripsi menjadi 8 dan 2, yang berarti dienkripsi menjadi kebalikannya. Tapi kesimpulan yang bisa diambil dari contoh yang sederhana ini adalah RSA dapat digunakan dalam penyandian dalam pengiriman informasi. Kunci RSA yang mempunyai ukuran 512 dan 768 bit dianggap masih lemah dan mudah dijebol. Ukuran kunci yang dianjurkan adalah
1024 bit. Ukuran 2048 dan 3072 bit merupakan suatu ukuran yang lebih baik. kode penerapan implementasi program algoritma RSA menggunakan bahasa pemrograman Java. package tugas; import java.math.biginteger; import java.security.secureran dom; /** * * @author home */ public class Tugas { private BigInteger n, d, e; private int bitlen = 1024; /** Create an instance that can encrypt using someone elses public key. */ public Tugas(BigInteger newn, BigInteger newe) { n = newn; e = newe; /** Create an instance that can both encrypt and decrypt. */ public Tugas(int bits) { bitlen = bits; SecureRandom r = new SecureRandom(); BigInteger p = new BigInteger(bitlen / 2, 100, r); BigInteger q = new BigInteger(bitlen / 2, 100, r); n = p.multiply(q); BigInteger m = (p.subtract(biginteger. ONE)).multiply(q.subtract(BigInteger.ON E)); e = new BigInteger("3"); while (m.gcd(e).intvalue() > 1) { e = e.add(new BigInteger("2")); d = e.modinverse(m);
/** Encrypt the given plaintext message. */ public synchronized String encrypt(string message) { return (new BigInteger(message.getB ytes())).modpow(e, n).tostring(); /** Encrypt the given plaintext message. */ public synchronized BigInteger encrypt(biginteger message) { return message.modpow(e, n); /** Decrypt the given ciphertext message. */ public synchronized String decrypt(string message) { return new String((new BigInteger(message)).mo dpow(d, n).tobytearray()); /** Decrypt the given ciphertext message. */ public synchronized BigInteger decrypt(biginteger message) { return message.modpow(d, n); /** Generate a new public and private key set. */ public synchronized void generatekeys() { SecureRandom r = new SecureRandom(); BigInteger p = new BigInteger(bitlen / 2, 100, r); BigInteger q = new BigInteger(bitlen / 2, 100, r); n = p.multiply(q); BigInteger m = (p.subtract(biginteger. ONE)).multiply(q.subtract(BigInteger.ON E)); e = new BigInteger("3"); while (m.gcd(e).intvalue() > 1) { e = e.add(new BigInteger("2"));
d = e.modinverse(m); /** Return the modulus. */ public synchronized BigInteger getn() { return n; /** Return the public key. */ public synchronized BigInteger gete() { return e; /** * @param args the command line arguments */ public static void main(string[] args) { // TODO code application logic here Tugas rsa = new Tugas(1024); BigInteger plaintext = new BigInteger(text1.getByt es()); BigInteger ciphertext = rsa.encrypt(plaintext); System.out.println("Enk ripsi: " + ciphertext); plaintext = rsa.decrypt(ciphertext) ; String text2 = new String(plaintext.toByte Array()); System.out.println("Des kripsi: " + text2); Tampilan Program : System.out.print("Enter string:"); //String rawstring = userinput.readline(); String text1 = "AINI DEVY DHIKA"; System.out.println("Pla intext: " + text1);
BAB IV PENUTUP 4.1 Kesimpulan 1. Dengan program ini algoritma Rivest Shamir Adleman (RSA) dapat digunakan pada file teks sebagai metode untuk mengenkripsi file teks. 2. Ukuran panjang kunci (bit) pada pembangkitan kunci berpengaruh pada lama waktu pemrosesan, semakin besar nilai panjang kunci maka semakin banyak waktu yang diperlukan untuk proses pembangkitan. 3. Panjang teks yang dikirim berpengaruh pada lama waktu proses enkripsi dan dekripsi, semakin panjang teks maka semakin lama waktu untuk mengenkripsi dan mendekripsi teks. 4.2 Saran Penulis menyadari bahwa masih terdapat beberapa kekurangan dalam program ini, untuk itu melalui bagian ini penulis hendak memberikan saran bagi pengembangan dan penyempurna selanjutnya. Salah satu kekurangan program ini adalah terbatasnya jumlah bilangan prima yang dapat dibangkitkan yaitu 1000 bilangan. Penulis berharap dalam pengembangan program algoritma RSA dapat memenuhi persyaratan dari algoritma RSA itu sendiri yaitu bilangan prima yang digunakan berjumlah lebih dari 100 digit. Demikian saran yang dapat diajukan oleh penulis, semoga program ini dapat dikembangkan menjadi lebih baik dan lebih bermanfaat dimasa mendatang. DAFTAR PUSTAKA 1. Aulya Suryana dkk, Enkripsi,Manajemen Teknologi Informasi,Sekolah Tinggi Manajemen Informatika dan Teknik Komputer (STMIK) STIKOM BALI, 2007.
2. Bambang Harianto, Esensiesensi Bahasa Pemograman Java, 2005. 3. Budhi Irawan, Rancang Bangun Sistem Keamanan Instant Messanger Menggunakan Kriptografi DenganmAlgoritma RSA Caesar Cipher, Program Magister Teknik Elektro Bidang Khusus Teknik Komputer Program Pascasarjana Institut Teknologi Bandung, 2005. 4. Irawan, E-Trik JAVA (Dasar Pemrograman Java), Maxikom, Palembang, 2007. 5. Muhazir, Web Design and Programming Tutorial, http://indodesain.org/2008/06 /03/tutorial -dasarpemrograman-java-berbasis guimenggunakan- netbeans/, Mei 2008. 6. M. Zaki Riyanto dan Ardhi Ardhian, Kriptografi Kunci Publik: Sandi RSA, Yogyakarta, 30 Agustus 2008. Rinaldi Munir. Kriptografi, Informatika, Bandung, 2006. 7. URL : http://www.asciitable.com