LAMPIRAN A : LISTING PROGRAM

dokumen-dokumen yang mirip
Metode Sequential Searching di Java Console

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

Badiyanto, S.Kom., M.Kom. PBO java

Modul 3 Flow Control dan Input

Bahasa Pemrograman :: Dasar Pemrograman Java

BAB II VARIABEL DAN TIPE DATA

BAHASA PEMROGRAMAN JAVA

2 TIPE DATA DAN VARIABEL

LAMPIRAN A : LISTING PROGRAM

Metode Insertion Sort di Java Console

Pertemuan III [STRUKTUR KONTROL] CariGrade.java Program mencari grade nilai menggunakan struktur control if-else

BAB 1 KONSEP DASAR JAVA

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

PEMAHAMAN DASAR DASAR JAVA

Input Nilai tanpa Case String di Java

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Nama Lengkap : Muiz Lidinillah NIM :

BAB 4 ARRAY. number1 = 10; number2 = 20; number3 = 30;

DASAR PEMOGRAMAN JAVA

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

Terdiri atas deretan karakter String diimplementasikan oleh java dalam bentuk class. Dapat langsung di konstruksi tanpa perintah new

Percabangan & Perulangan

Modul Praktikum 3 Pemograman Berorientasi Objek

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

A. Judul Percobaan/praktikum Tipe Data, Keyword, Variabel, Operator dan Teknik Konfersi

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

BAB 2 LANDASAN TEORI. Universitas Sumatera Utara

Vigenere Minimum-Prime Key-Adding Cipher

LAPORAN RESMI PRAKTIKUM BAHASA PEMROGRAMAN

Pemrograman Berorientasi Objek. Beni Suranto, S.T.

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

ANALISIS DAN PERBANDINGAN PENGGUNAAN METODE PEMBANGKITAN BILANGAN PRIMA FERMAT DAN LUCAS-LEHMER DALAM KRIPTOGRAFI ELGAMAL SKRIPSI

HASIL DAN PEMBAHASAN. Algoritma Modular Exponentiation mempunyai kompleksitas sebesar O((lg n) 3 ) (Menezes et al. 1996).

Pemograman Java. Input(ii) String Function Pengulangan(FOR-While-DoWhile) Yoannita, S.Kom

BAB V PENYELEKSIAN KONDISI DAN PERULANGAN

Tidak perlu ditentukan jumlah karakternya Inisialisasi iili i: Langsung tanpa kata kunci new Langsung dengan kata kunci new

Elemen Dasar Dalam Bahasa Java

Pengenalan JavaScript

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

Perulangan / Looping

NASKAH UTAMA ULANGAN AKHIR SEMESTER GANJIL TAHUN PELAJARAN 2013/2014

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

BAB Argument Command-Line dan System Properties

TUGAS 1: WIN OR LOSE. package kartu; import java.util.random; public class kartu { /** args the command line arguments

Pertemuan 2 Struktur Kontrol Percabangan

BAB V. STATEMEN KONTROL

LISTING PROGRAM. Private Sub MDIParent1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

PEMROGRAMAN JAVA. Petunjuk Penulisan Program Token Aturan Penamaan Identifier Lingkungan /Scope dari variabel Tipe Data (i) Yoannita

OPERATOR-OPERATOR DALAM JAVA

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

Cara Membaca File Text di JAVA

BAB I PENDAHULUAN. 1.1 Latar Belakang

SUMBER BELAJAR PENUNJANG PLPG

Program Java Sesi 1. Arief Susanto

Chapter 12.1: package chapter.pkg12; /** * Advan */ import java.util.random; import static java.lang.system.out; public class Chapter12 {

Modul Praktikum Pemrograman

if (ekspresi_boolean) {

Percabangan dan Perulangan

BAB 2 INPUT DARI KEYBOARD

BAB III ANALISIS DAN DESAIN SISTEM

BAB II TINJAUAN PUSTAKA

Operator, Statement kondisional, dan Iterasi pada Java

Percabangan & Perulangan

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

LAMPIRAN A. Universitas Sumatera Utara

UAS JAVAUAS JAVA. Fibonaci Naik :

TIPE DATA DAN VARIABLE

ARRAY. 7 th week Estu Sinduningrum ST,MT

TIPE DATA DAN VARIABLE

Pertemuan 3 Struktur Perulangan pada Java

MATERI PRAKTIKUM 2 ARRAY

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

Pertemuan2 Percabangan & Perulangan pada Python

Objek String PEMROGRAMAN DASAR. Dr. Eng. Herman Tolle, ST., MT. Sistem Informasi PTIIK UB Semester Ganjil 2014/2015

Metode Binnary Searching di Java Console

Belajar ArrayList di Java

Tipe Data dan Operator

PENERAPAN TEKNIK ENSKRIPSI EL GAMAL PADA APLIKASI JASA PENGIRIMAN MENGGUNAKAN BAHASA PEMROGRAMAN C#

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)

LAMPIRAN A: SOURCE CODE PROGRAM CLASS METODE

Array Pendeklarasian Array

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

STREAM DAN FILE. PipedInputStream, SequenceInputStream, dan StringBufferInputStream.

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Tipe data primitif adalah tipe data dasar yang dikenali oleh Java dan bukan merupakan class. Tipe data primitif ini dapat dikenali dengan ciri

DASAR PEMROGRAMAN JAVA

Operator dan Assignment

PERTEMUAN I PENGENALAN JAVA

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK

Exception adalah penanda bahwa kondisi/kejadian yang tidak diinginkan telah terjadi pada program kita. Ada 2 jenis exception (+1 Error):

String. Berikut perbedaan antara deklarasi char dan deklarasi String:

TIPE DATA Pertemuan (K-03/L-03)

SILABUS MATA KULIAH PEMROGRAMAN JAVA

PEMROGRAMAN JARINGAN MODUL 3 STREAM

PERCOBAAN 1 : Ketik program di bawah ini, bila terjadi kasalahan waktu compile dan runtime, betulkan!

BAB 3 ANALISIS DAN PERANCANGAN PROGRAM

Transkripsi:

LAMPIRAN A : LISTING PROGRAM Basic.java package ferluleapp; /** * * @author Ratna */ public class basic { //fungsi untuk menghitung modulus dalam pangkat yang besar public static int modexp(int a, int b, int x) { int c = 1 ; for (int i = 0 ; i < b ; i++ ){ c = (a * c) % x; return c; //membuat daftar karakter dalam array public static char codechar[] = { ' ','1','2','3','4','5','6','7','8','9','0','- ','=','!','@','#','$','%','^','&','*','(',')','_','+','a','b','c','d','e','f', 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w',' x','y','z','a','b','c','d','e','f','g','h','i','j','k', 'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',',','.',' /',';',' ','[',']','\'','<','>','?',':',' ','{','', ' ','`','~',' ',' ',' ',' ','β' ; //merubah karakter menjadi kode public static int chartocode(char m){ int codec = 0; for (int i = 0 ; i < codechar.length; i++) { if (m == codechar[i]){ codec = i; return codec; //merubah kode menjadi karakter public static char codetochar(int co){ char charc = 0; for (int i = 0 ; i < codechar.length; i++){ if(co == i){ charc = codechar[i];

return charc; //fungsi untuk pangkat dengan inputan n(nilai awal), m(pangkat) public static int mathpow(int n, int m){ int x = 1; for( int i = 1 ; i <= m ; i++ ){ x = n * x; return x; Elgamal.java package ferluleapp; import java.util.random; /** * * @author Ratna */ public class elgamal { //fungsi untuk memecah ciphernumber dari proses enkripsi public static String mt(string x){ String result = ""; String a = ""; String b = ""; char resulta = 0; char resultb = 0; if(x.length() == 1){ a = "0"; b = String.valueOf(x.charAt(0)); else if(x.length() == 2){ a = String.valueOf(x.charAt(0)); b = String.valueOf(x.charAt(1)); else if(x.length() == 3){ a = String.valueOf(x.charAt(0)); b = String.valueOf(x.charAt(1)) + String.valueOf(x.charAt(2)); else if(x.length() == 4){ a = String.valueOf(x.charAt(0)) + String.valueOf(x.charAt(1)); b = String.valueOf(x.charAt(2)) + String.valueOf(x.charAt(3)); resulta = basic.codetochar(integer.parseint(a)); resultb = basic.codetochar(integer.parseint(b));

result = String.valueOf(resulta)+String.valueOf(resultb); return result; //fungsi proses enkripsi public static String enkripsi(string str, int keyp){ //[START] Initialize variabel-variabel Random gen = new Random(); int keyalpha = 0, keybeta = 0, keya = 0; int keyk = 0; int keygamma = 0; int keydelta = 0; int ca = 0; String ciphertext = ""; //[END] Initialize variabel-variabel keyalpha = prime.isprimitif(keyp); //perulangan mencari nilai kunci alpha int tempkeya = 0; for( int i = 0 ; i < keyp - 2 ; i++ ){ tempkeya = gen.nextint(keyp-2) + 1; if ( prime.isprime(tempkeya) == true && tempkeya < 1000){ keya = tempkeya; //perulangan kunci alpha menghindari digit kedua dari belakang 0 if( String.valueOf(keyA).length() > 2){ while ( String.valueOf(keyA).charAt(String.valueOf(keyA).length()-2) == '0' ){ for( int i = 0 ; i < keyp - 2 ; i++ ){ tempkeya = gen.nextint(keyp-2) + 1; if ( prime.isprime(tempkeya) == true && tempkeya < 1000){ keya = tempkeya; keybeta = basic.modexp(keyalpha, keya, keyp); ciphertext += mt(integer.tostring(keyp))+""+mt(integer.tostring(keya)); for (int i = 0 ; i < str.length() ; i++){ keyk = (int) (Math.random() * (keyp - 2)); // menentukan nilai acak K,dimana K elemen dari 0... p-2 ca = basic.chartocode(str.charat(i)); // merubah char ke bentuk kode keygamma = basic.modexp(keyalpha, keyk, keyp); // menghitung nilai Gamma untuk proses enkripsi

if ( Integer.toString(keyGamma).length() > 2){ while ( Integer.toString(keyGamma).charAt(Integer.toString(keyGamma).length() - 2) == '0' ){ keyk = (int) (Math.random() * (keyp - 2)); keygamma = basic.modexp(keyalpha, keyk, keyp); keydelta = basic.modexp((basic.modexp(keybeta, keyk, keyp)*basic.modexp(ca, 1, keyp)), 1, keyp); // menghitung nilai Delta untuk proses enkripsi if ( Integer.toString(keyDelta).length() > 2){ while ( Integer.toString(keyDelta).charAt(Integer.toString(keyDelta).length() - 2) == '0' ){ keyk = (int) (Math.random() * (keyp - 2)); keygamma = basic.modexp(keyalpha, keyk, keyp); keydelta = basic.modexp((basic.modexp(keybeta, keyk, keyp)*basic.modexp(ca, 1, keyp)), 1, keyp); ciphertext += mt(integer.tostring(keygamma))+""+mt(integer.tostring(keydelta)); return ciphertext; // fungsi untuk melakukan proses dekripsi. public static String dekripsi(string txt){ int keydekrip = 0; int keydg = 0; int keydek= 0; int cd = 0; String plaintext = ""; String a = "", b = "", c = ""; int q = 0, n = 1; String tempkeyp = "", tempkeya = ""; String tempkeypa = String.valueOf(basic.charToCode(txt.charAt(0))); String tempkeypb = String.valueOf(basic.charToCode(txt.charAt(1))); String tempkeyaa = String.valueOf(basic.charToCode(txt.charAt(2))); String tempkeyab = String.valueOf(basic.charToCode(txt.charAt(3))); if ( tempkeypb.length() == 3 ){ if(tempkeypb.substring(0, 1).equals("1") && tempkeypb.substring(1, 2).equals("0")){ tempkeypb = tempkeypb.substring(1, 2) + tempkeypb.substring(2, 3);

if ( tempkeyab.length() == 3 ){ if(tempkeyab.substring(0, 1).equals("1") && tempkeyab.substring(1, 2).equals("0")){ tempkeyab = tempkeyab.substring(1, 2) + tempkeyab.substring(2, 3); int keyp = Integer.valueOf(tempKeyPa+tempKeyPb); int keya = Integer.valueOf(tempKeyAa+tempKeyAb); txt = txt.substring(4, txt.length()); int[] hh = new int[txt.length()/2]; for (int j = 0 ; j < txt.length()/2 ; j++){ a = String.valueOf(basic.charToCode(txt.charAt(q))); b = String.valueOf(basic.charToCode(txt.charAt(q+1))); q = q + 2; c = a+b; hh[j] += Integer.valueOf(c); keyp); int count = 0; int keygammainvers = 0 ; int tempa = 0, tempb = 0; for ( int i = 0 ; i < (hh.length)/2 ; i++){ keygammainvers = keyp - 1 - keya; keydekrip = basic.modexp(hh[count], (keygammainvers), tempa = basic.modexp(hh[(count+1)], 1, keyp); keydg = basic.modexp((tempa * keydekrip), 1, keyp); plaintext += basic.codetochar(keydg); count = count + 2; return plaintext; filechooser.java package ferluleapp; import java.io.bufferedreader; import java.io.file; import java.io.filereader; import java.io.ioexception; import javax.swing.jfilechooser; /** * * @author Ratna */ public class filechooser { public static String test() throws IOException { String str = "";

JFileChooser chooser=new JFileChooser(); int returnval = chooser.showopendialog(null); if(returnval == JFileChooser.APPROVE_OPTION) { File f = chooser.getselectedfile(); BufferedReader br=new BufferedReader(new FileReader(f)); String st=""; while((st=br.readline())!=null){ str += st+"\n"; return str; static void main(string string) { throw new UnsupportedOperationException("Not yet implemented"); ifprime.java package ferluleapp; /** * * @author Ratna */ public class ifprime { //fungsi untuk metode Fermat public static boolean isfermat(int prime){ boolean isfermat = false; for (int i = 1 ; i < prime ; i++){ if(basic.modexp(i, (prime-1), prime) == 1){ isfermat = true; else { return isfermat; //fungsi untuk metode Lucas-Lehmer public static int islule(int x){ boolean islule = false; int keymp = 0; boolean ismerseneprime = false; int mp = basic.mathpow(2, x) - 1; int s = 4; //int n = 0; if (prime.isprime(mp) == true){ ismerseneprime= true;

for ( int i = 3 ; i <= x ; i++){ n++; s = ((basic.mathpow(s, 2)) - 2 ) % mp; if( s == 0 && ismerseneprime == true){ keymp = mp; return keymp; keygenerator.java package ferluleapp; import java.util.random; /** * * @author Ratna */ //class untuk membangkitkan kunci berdasarkan Fermat atau Lucas- Lehmer public class keygenerator { public static int keygenfermat(){ int s = 0, t = 0, keyp = 0; for ( int i = 0 ; i < 5000 ; i++){ s = prime.primegenerator(); //System.out.println("s : "+s+" : "+ifprime.isfermat(s)+" : "+prime.issecureprime(s)); if( prime.isprime(s) == true ){ if ( ifprime.isfermat(s) == true && prime.issecureprime(s) == true && s > 100 ){ keyp = s; else { continue; return keyp; public static int keygenlule(){ int keyp = 0, t = 0; Random generator = new Random(); for ( int i = 0 ; i < 50 ; i++){ t = generator.nextint(50)+1; if ( prime.isprime(t) == true) { if (t==31){ continue; if ( ifprime.islule(t)!= 0 && ifprime.islule(t) > 255 ){ keyp = ifprime.islule(t);

else if ( ifprime.islule(t) == 0) { keyp = 0; return keyp; Prime.java package ferluleapp; import java.util.random; /** * * @author Ratna */ public class prime { //fungsi untuk mengecek bilangan prima public static boolean isprime(int p){ boolean prime = false; int c = 0; int b = 1; for (int i = 0 ; i < p ; i++){ b = b + 1; c = p % b; if ( c == 0 ){ if ( p == b ){ prime = true; else { prime = false; return prime; public static boolean isprimedouble(double p){ boolean prime = false; double c = 0; int b = 1; for (int i = 0 ; i < p ; i++){ b = b + 1; c = p % b;

if ( c == 0 ){ if ( p == b ){ prime = true; else { prime = false; return prime; //fungsi untuk mengecek bilangan prima aman public static boolean issecureprime(int x){ int q = 0 ; q = ( x - 1 ) / 2; if( isprime(q) == true ){ return true; else { return false; //fungsi untuk membangkitkan bilangan acak public static int primegenerator(){ Random generator = new Random(); int r = generator.nextint(5000)+256; return r; // fungsi untuk melakukan proses enkripsi //fungsi untuk mengecek bilangan primitif public static int isprimitif(int keyp){ int q = 0; int alpha = 0; int alphas = 0 ; int alphaq = 0; int tempprim = 0; Boolean isprim = false; Random gen = new Random(); for ( int i = 0 ; i < keyp-2 ; i++ ){ tempprim = gen.nextint(keyp-2) + 1; q = (keyp - 1) / 2; alphas = basic.modexp(tempprim, 2, keyp); alphaq = basic.modexp(tempprim, q, keyp); if ( (alphas == 1 && alphaq == 1) (alphas == 1 alphaq == 1) ){ isprim = false; else { isprim = true; alpha = tempprim;

return alpha;

LAMPIRAN B : TABEL KODE KARAKTER KODE KARAKTER KODE KARAKTER KODE KARAKTER 00 <spasi> 34 j 68 R 01 1 35 k 69 S 02 2 36 l 70 T 03 3 37 m 71 U 04 4 38 n 72 V 05 5 39 o 73 W 06 6 40 p 74 X 07 7 41 q 75 Y 08 8 42 r 76 Z 09 9 43 s 77, 10 0 44 t 78. 11-45 u 79 / 12 = 46 v 80 ; 13! 47 w 81 14 @ 48 x 82 [ 15 # 49 y 83 ] 16 $ 50 z 84 \ 17 % 51 A 85 < 18 ^ 52 B 86 > 19 & 53 C 87? 20 * 54 D 88 : 21 ( 55 E 89 22 ) 56 F 90 { 23 _ 57 G 91 24 + 58 H 92 25 a 59 I 93 ` 26 b 60 J 94 ~ 27 c 61 K 95 28 d 62 L 96

KODE KARAKTER KODE KARAKTER KODE KARAKTER 29 e 63 M 97 30 f 64 N 98 31 g 65 O 99 β 32 h 66 P 33 i 67 Q

CURRICULUM VITAE Nama Alamat Sekarang Alamat Orang Tua : Ratnaningtyas Yoga Wijayanti : Jl. Merak 2 No.80 Ling.XIV Perum Sri Gunting : Jl. Merak 2 No.80 Ling.XIV Perum Sri Gunting Telp/Hp : 08982860604 Email : na.ningtyas90@gmail.com Riwayat Pendidikan SD Negeri III Ketaon dari Tahun 1996 s/d Tahun 2002 SMP Negeri 1 Banyudono dari Tahun 2002 s/d Tahun 2004 SMP Swasta Raksana Medan dari Tahun 2004 s/d Tahun 2005 SMA Swasta Raksana Medan dari Tahun 2005 s/d Tahun 2008 Mahasiswa Ilmu Komputer USU dari Tahun 2008 s/d Tahun 2013 Keahlian/Kursus yang diikuti: 1. Bahasa Inggris 2. Bahasa Pemograman Java