• Tidak ada hasil yang ditemukan

Kriptografi Kunci Publik Algoritma Elgamal Dengan Metode The Sieve Of Eratosthenes Untuk Pembangkitan Bilangan Prima

N/A
N/A
Protected

Academic year: 2019

Membagikan "Kriptografi Kunci Publik Algoritma Elgamal Dengan Metode The Sieve Of Eratosthenes Untuk Pembangkitan Bilangan Prima"

Copied!
41
0
0

Teks penuh

(1)

1.

KriptoElGamalApp.java

/*

* KriptoElGamalApp.java */

package kriptoelgamal;

import org.jdesktop.application.Application;

import org.jdesktop.application.SingleFrameApplication;

/**

* The main class of the application. */

public class KriptoElGamalApp extends SingleFrameApplication {

/**

* At startup create and show the main frame of the application.

*/

@Override protected void startup() { show(new KriptoElGamalView(this)); }

/**

* This method is to initialize the specified window by injecting resources.

* Windows shown in our application come fully initialized from the GUI

* builder, so this additional configuration is not needed. */

@Override protected void configureWindow(java.awt.Window root) {

}

/**

* A convenient static getter for the application instance. * @return the instance of KriptoElGamalApp

*/

public static KriptoElGamalApp getApplication() {

return Application.getInstance(KriptoElGamalApp.class); }

/**

* Main method launching the application. */

(2)

} }

2.

KriptoElGamalView.java

/*

* KriptoElGamalView.java */

package kriptoelgamal;

import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap;

import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView;

import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent;

import java.awt.event.ActionListener; import java.util.ArrayList;

import java.util.Random;

import java.util.StringTokenizer; import javax.swing.Timer;

import javax.swing.Icon; import javax.swing.JDialog; import javax.swing.JFrame;

import org.jdesktop.application.Task;

/**

* The application's main frame. */

public class KriptoElGamalView extends FrameView {

public KriptoElGamalView(SingleFrameApplication app) { super(app);

initComponents();

// status bar initialization - message timeout, idle icon and busy animation, etc

ResourceMap resourceMap = getResourceMap(); int messageTimeout =

resourceMap.getInteger("StatusBar.messageTimeout"); messageTimer = new Timer(messageTimeout, new ActionListener() {

public void actionPerformed(ActionEvent e) { statusMessageLabel.setText("");

} });

messageTimer.setRepeats(false); int busyAnimationRate =

resourceMap.getInteger("StatusBar.busyAnimationRate"); for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] =

(3)

}

busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {

public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length;

statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); }

});

idleIcon = resourceMap.getIcon("StatusBar.idleIcon"); statusAnimationLabel.setIcon(idleIcon);

progressBar.setVisible(false);

// connecting action tasks to status bar via TaskMonitor

TaskMonitor taskMonitor = new

TaskMonitor(getApplication().getContext());

taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {

public void

propertyChange(java.beans.PropertyChangeEvent evt) {

String propertyName = evt.getPropertyName(); if ("started".equals(propertyName)) {

if (!busyIconTimer.isRunning()) {

statusAnimationLabel.setIcon(busyIcons[0]); busyIconIndex = 0; busyIconTimer.start(); }

progressBar.setVisible(true);

progressBar.setIndeterminate(true); } else if ("done".equals(propertyName)) { busyIconTimer.stop();

statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false);

progressBar.setValue(0);

} else if ("message".equals(propertyName)) { String text = (String)(evt.getNewValue()); statusMessageLabel.setText((text == null) ? "" : text);

messageTimer.restart();

} else if ("progress".equals(propertyName)) { int value = (Integer)(evt.getNewValue()); progressBar.setVisible(true);

progressBar.setIndeterminate(false); progressBar.setValue(value);

} } }); }

@Action

(4)

JFrame mainFrame =

KriptoElGamalApp.getApplication().getMainFrame();

aboutBox = new KriptoElGamalAboutBox(mainFrame); aboutBox.setLocationRelativeTo(mainFrame);

}

KriptoElGamalApp.getApplication().show(aboutBox); }

/** This method is called from within the constructor to * initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor. */

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

mainPanel = new javax.swing.JPanel(); keygenBtn = new javax.swing.JButton(); enkripsiBtn = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel();

jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); hapusBtn = new javax.swing.JButton(); dekripsiBtn = new javax.swing.JButton(); menuBar = new javax.swing.JMenuBar();

javax.swing.JMenu fileMenu = new javax.swing.JMenu(); javax.swing.JMenuItem exitMenuItem = new

javax.swing.JMenuItem();

javax.swing.JMenu helpMenu = new javax.swing.JMenu(); javax.swing.JMenuItem aboutMenuItem = new

javax.swing.JMenuItem();

statusPanel = new javax.swing.JPanel();

javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();

statusMessageLabel = new javax.swing.JLabel(); statusAnimationLabel = new javax.swing.JLabel(); progressBar = new javax.swing.JProgressBar();

mainPanel.setName("mainPanel"); // NOI18N

javax.swing.ActionMap actionMap =

org.jdesktop.application.Application.getInstance(kriptoelgamal. KriptoElGamalApp.class).getContext().getActionMap(KriptoElGamal View.class, this);

keygenBtn.setAction(actionMap.get("showKeyGenForm")); // NOI18N

(5)

keygenBtn.setText(resourceMap.getString("keygenBtn.text")); // NOI18N

keygenBtn.setName("keygenBtn"); // NOI18N

enkripsiBtn.setAction(actionMap.get("showEnkripsiForm")); // NOI18N

enkripsiBtn.setText(resourceMap.getString("enkripsiBtn.text")); // NOI18N

enkripsiBtn.setName("enkripsiBtn"); // NOI18N

jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(j avax.swing.border.BevelBorder.LOWERED));

jPanel1.setName("jPanel1"); // NOI18N

jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N

jLabel1.setName("jLabel1"); // NOI18N

jScrollPane1.setName("jScrollPane1"); // NOI18N

jTextArea1.setColumns(20); jTextArea1.setRows(5);

jTextArea1.setName("jTextArea1"); // NOI18N jScrollPane1.setViewportView(jTextArea1);

hapusBtn.setText(resourceMap.getString("hapusBtn.text")); // NOI18N

hapusBtn.setName("hapusBtn"); // NOI18N hapusBtn.addActionListener(new

java.awt.event.ActionListener() { public void

actionPerformed(java.awt.event.ActionEvent evt) { hapusBtnActionPerformed(evt); }

});

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jScrollPane1,

(6)

.addComponent(hapusBtn, javax.swing.GroupLayout.Alignment.TRAILING)) .addContainerGap())

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED)

.addComponent(jScrollPane1,

javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE) .addGap(18, 18, 18)

.addComponent(hapusBtn) .addContainerGap()) );

dekripsiBtn.setAction(actionMap.get("showDekripsiForm")); // NOI18N

dekripsiBtn.setText(resourceMap.getString("dekripsiBtn.text")); // NOI18N

dekripsiBtn.setName("dekripsiBtn"); // NOI18N

javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);

mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup(

mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING)

.addGroup(mainPanelLayout.createSequentialGroup() .addContainerGap()

.addGroup(mainPanelLayout.createParallelGroup(j avax.swing.GroupLayout.Alignment.LEADING)

.addComponent(keygenBtn) .addComponent(enkripsiBtn) .addComponent(dekripsiBtn)) .addGap(18, 18, 18)

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap())

);

mainPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dekripsiBtn, enkripsiBtn,

keygenBtn});

(7)

mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING)

.addGroup(mainPanelLayout.createSequentialGroup() .addContainerGap()

.addGroup(mainPanelLayout.createParallelGroup(j avax.swing.GroupLayout.Alignment.LEADING)

.addGroup(mainPanelLayout.createSequentialG roup()

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap())

.addGroup(mainPanelLayout.createSequentialG roup()

.addComponent(keygenBtn) .addGap(18, 18, 18)

.addComponent(enkripsiBtn) .addGap(18, 18, 18)

.addComponent(dekripsiBtn) .addGap(54, 54, 54)))) );

menuBar.setName("menuBar"); // NOI18N

fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N

fileMenu.setName("fileMenu"); // NOI18N

exitMenuItem.setAction(actionMap.get("quit")); // NOI18N

exitMenuItem.setName("exitMenuItem"); // NOI18N fileMenu.add(exitMenuItem);

menuBar.add(fileMenu);

helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N

helpMenu.setName("helpMenu"); // NOI18N

aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N

aboutMenuItem.setName("aboutMenuItem"); // NOI18N helpMenu.add(aboutMenuItem);

menuBar.add(helpMenu);

statusPanel.setName("statusPanel"); // NOI18N

(8)

statusMessageLabel.setName("statusMessageLabel"); // NOI18N

statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingCo nstants.LEFT);

statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N

progressBar.setName("progressBar"); // NOI18N

javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);

statusPanel.setLayout(statusPanelLayout); statusPanelLayout.setHorizontalGroup(

statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING)

.addComponent(statusPanelSeparator,

javax.swing.GroupLayout.DEFAULT_SIZE, 429, Short.MAX_VALUE) .addGroup(statusPanelLayout.createSequentialGroup() .addContainerGap()

.addComponent(statusMessageLabel)

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED, 259, Short.MAX_VALUE)

.addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED)

.addComponent(statusAnimationLabel) .addContainerGap())

);

statusPanelLayout.setVerticalGroup(

statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.A lignment.LEADING)

.addGroup(statusPanelLayout.createSequentialGroup() .addComponent(statusPanelSeparator,

javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(statusPanelLayout.createParallelGroup (javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(statusMessageLabel) .addComponent(statusAnimationLabel) .addComponent(progressBar,

javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(3, 3, 3))

(9)

setComponent(mainPanel); setMenuBar(menuBar);

setStatusBar(statusPanel);

}// </editor-fold>

private void

hapusBtnActionPerformed(java.awt.event.ActionEvent evt) { jTextArea1.setText("");

}

@Action

public Task showKeyGenForm() { JFrame frameutama =

KriptoElGamalApp.getApplication().getMainFrame();

KeyGen keyGenForm = new KeyGen(frameutama,true); if (keyGenForm == null) {

keyGenForm.setLocationRelativeTo(frameutama); }

KriptoElGamalApp.getApplication().show(keyGenForm);

return new KeyGenTask(getApplication()); }

private class KeyGenTask extends Task<Void, Void> {

KeyGenTask(org.jdesktop.application.Application app) { super(app);

}

@Override

protected Void doInBackground() { try {

int N = KeyGen.getBatasAtas();

jTextArea1.setText("Pembangkitan kunci dalam proses...");

keyGenProcess(N);

}

catch(java.lang.Exception e) {

jTextArea1.setText("Pembangkitan Kunci gagal.");

}

return null; }

}

@Action

public Task showEnkripsiForm() { JFrame frameutama =

KriptoElGamalApp.getApplication().getMainFrame();

(10)

enkripsiForm.setLocationRelativeTo(frameutama); }

KriptoElGamalApp.getApplication().show(enkripsiForm);

return new EnkripsiTask(getApplication()); }

private class EnkripsiTask extends Task<Void, Void> { EnkripsiTask(org.jdesktop.application.Application app) {

super(app); }

@Override

protected Void doInBackground() { try {

String plainteks = Enkripsi.getPlainteks(); int [] kunciEnkripsi =

Enkripsi.getKunciEnkripsi();

jTextArea1.setText("Enkripsi dalam proses..."); enkripsiProcess(plainteks,kunciEnkripsi);

}

catch(java.lang.Exception e) {

jTextArea1.setText("Enkripsi gagal.");

}

return null; }

}

@Action

public Task showDekripsiForm() { JFrame frameutama =

KriptoElGamalApp.getApplication().getMainFrame();

Dekripsi dekripsiForm = new Dekripsi(frameutama,true); if (dekripsiForm == null) {

dekripsiForm.setLocationRelativeTo(frameutama); }

KriptoElGamalApp.getApplication().show(dekripsiForm);

return new DekripsiTask(getApplication()); }

private class DekripsiTask extends Task<Void, Void> { DekripsiTask(org.jdesktop.application.Application app) {

super(app); }

@Override

(11)

String cipherteks = Dekripsi.getCipherteks(); int [] kunciDekripsi =

Dekripsi.getKunciDekripsi();

jTextArea1.setText("Dekripsi dalam proses..."); dekripsiProcess(cipherteks,kunciDekripsi);

}

catch(java.lang.Exception e) {

jTextArea1.setText("Dekripsi gagal.");

}

return null; }

}

// Variables declaration - do not modify private javax.swing.JButton dekripsiBtn;

private javax.swing.JButton enkripsiBtn; private javax.swing.JButton hapusBtn; private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; private javax.swing.JButton keygenBtn; private javax.swing.JPanel mainPanel; private javax.swing.JMenuBar menuBar;

private javax.swing.JProgressBar progressBar; private javax.swing.JLabel statusAnimationLabel; private javax.swing.JLabel statusMessageLabel; private javax.swing.JPanel statusPanel;

// End of variables declaration

private final Timer messageTimer; private final Timer busyIconTimer; private final Icon idleIcon;

private final Icon[] busyIcons = new Icon[15]; private int busyIconIndex = 0;

private JDialog aboutBox;

private void keyGenProcess(int N) {

int prima [] = sieve(N);

Random rand = new Random(); int p = 3;

while (p<5) p = prima[rand.nextInt(prima.length)]; //kunci publik p

int a = 1;

while (a<2) a = rand.nextInt(p-1);//kunci kedua privat a

int euler = p-1;

(12)

int alpha = a;

while (alpha == a) alpha =

primitifRoot(p,faktor);//kunci publik alpha

int y = modexp(alpha,a,p);//kunci publik y = alpha^a mod p

jTextArea1.setText("Kunci Publik : \n kunci p = "+p +"\n kunci alpha = "+alpha

+"\n kunci y = "+y

+"\nKunci Privat : \n kunci a = "+a );

Enkripsi.setKunciE(p, alpha, y); Dekripsi.setKunciD(p,a);

}

private int[] sieve(int N) {

boolean isPrime [] = new boolean [N+1]; int prime_size=0;

for (int i=2; i<=N; i++) isPrime[i] = true;

for (int i=2; i*i<=N; i++) { if (isPrime[i]) {

for (int j=i; i*j<=N; j++) isPrime[i*j] = false;

} }

for (int i=2; i<=N; i++) {

if (isPrime[i]) prime_size++; }

int [] sieve = new int [prime_size]; int prime_index =0;

for(int i=2; i<=N; i++) { if (isPrime[i]) {

sieve [prime_index]=i; prime_index++;

} }

return sieve; }

private int modexp(int alpha, int a, int p) { long z = 1;

for (int i=0; i<a; i++) { z = (z * alpha) % p; }

int result = (int) z; return result;

}

private int[] faktorisasi(int euler, int[] prima) { int hasil_bagi = euler;

int f =0;

(13)

for (int i= 0; hasil_bagi != 1; i++) { while (hasil_bagi % prima [i] == 0) { hasil_bagi = hasil_bagi / prima[i]; if (f != prima[i]) {

f = prima[i];

faktor_ar.add(prima[i]); }

} }

Object faktor_toArr [] = faktor_ar.toArray(); int [] faktor = new int [faktor_ar.size()]; for (int j= 0; j<faktor_ar.size();j++)

faktor[j] = ((Integer) faktor_toArr[j]).intValue(); return faktor;

}

private int primitifRoot(int p, int[] faktor) { Random rand = new Random();

boolean primitiveRoot = false; int pR = 0;

while (!primitiveRoot) { pR = rand.nextInt(p)+1; int k = 0;

while (k<faktor.length && modexp(pR,(p-1)/faktor[k],p) >1) k++;

if (k == faktor.length) { primitiveRoot = true; }

}

return pR; }

private void enkripsiProcess(String plainteks, int[] kunciEnkripsi) {

int p = kunciEnkripsi[0]; int alpha = kunciEnkripsi[1]; int y = kunciEnkripsi[2];

int b = 0;//inisialisasi session key int pt_ascii;

Random rand = new Random();

int [] [] cipher = new int [plainteks.length()][2]; int tmp = 0;

for (int i = 0; i < plainteks.length(); i++) { b = rand.nextInt(p-2)+1;

cipher [i][0] = modexp(alpha,b,p);//cipherteks pertama

pt_ascii = (int) plainteks.charAt(i); tmp = modexp(y,b,p);

cipher [i][1] = 0;

for (int j = 0; j<pt_ascii; j++){

(14)

}

String cipherStr ="";

for (int i = 0; i<plainteks.length(); i++) {

cipherStr += cipher[i][0]+","+cipher[i][1]+" "; }

jTextArea1.setText("Cipherteks : \n"+cipherStr); Dekripsi.setCipher(cipherStr);

}

private void dekripsiProcess(String cipherteks, int[] kunciDekripsi) {

int a = kunciDekripsi[0]; int p = kunciDekripsi[1]; int plain, teks=0;

StringTokenizer st = new StringTokenizer(cipherteks, ", ");

int cipher [][] = new int [st.countTokens()/2][2]; String plaintext ="";

for (int i=0; st.hasMoreTokens(); i++) { cipher [i][0] = Integer.parseInt(st.nextToken()); cipher [i][1] = Integer.parseInt(st.nextToken()); }

for (int i = 0; i<cipher.length;i++){ plain = modexp(cipher[i][0],p-1-a,p); teks = 0;

for (int j= 0; j<cipher[i][1]; j++) { teks = (teks + plain ) % p;

}

plaintext += (char) teks; }

jTextArea1.setText("Plainteks : \n"+plaintext); }

}

3.

KriptoElGamalAboutBox.java

/*

* KriptoElGamalAboutBox.java */

package kriptoelgamal;

import org.jdesktop.application.Action;

(15)

public KriptoElGamalAboutBox(java.awt.Frame parent) { super(parent);

initComponents();

getRootPane().setDefaultButton(closeButton); }

@Action public void closeAboutBox() { dispose();

}

/** This method is called from within the constructor to * initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor. */

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

closeButton = new javax.swing.JButton(); javax.swing.JLabel appTitleLabel = new javax.swing.JLabel();

javax.swing.JLabel versionLabel = new javax.swing.JLabel();

javax.swing.JLabel appVersionLabel = new javax.swing.JLabel();

javax.swing.JLabel vendorLabel = new javax.swing.JLabel();

javax.swing.JLabel appVendorLabel = new javax.swing.JLabel();

javax.swing.JLabel homepageLabel = new javax.swing.JLabel();

javax.swing.JLabel appHomepageLabel = new javax.swing.JLabel();

javax.swing.JLabel appDescLabel = new javax.swing.JLabel();

javax.swing.JLabel imageLabel = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON _CLOSE);

org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(kriptoelgamal. KriptoElGamalApp.class).getContext().getResourceMap(KriptoElGam alAboutBox.class);

setTitle(resourceMap.getString("title")); // NOI18N setModal(true);

setName("aboutBox"); // NOI18N setResizable(false);

javax.swing.ActionMap actionMap =

(16)

KriptoElGamalApp.class).getContext().getActionMap(KriptoElGamal AboutBox.class, this);

closeButton.setAction(actionMap.get("closeAboutBox")); // NOI18N

closeButton.setName("closeButton"); // NOI18N

appTitleLabel.setFont(appTitleLabel.getFont().deriveFont(appTit leLabel.getFont().getStyle() | java.awt.Font.BOLD,

appTitleLabel.getFont().getSize()+4));

appTitleLabel.setText(resourceMap.getString("Application.title" )); // NOI18N

appTitleLabel.setName("appTitleLabel"); // NOI18N

versionLabel.setFont(versionLabel.getFont().deriveFont(versionL abel.getFont().getStyle() | java.awt.Font.BOLD));

versionLabel.setText(resourceMap.getString("versionLabel.text") ); // NOI18N

versionLabel.setName("versionLabel"); // NOI18N

appVersionLabel.setText(resourceMap.getString("Application.vers ion")); // NOI18N

appVersionLabel.setName("appVersionLabel"); // NOI18N

vendorLabel.setFont(vendorLabel.getFont().deriveFont(vendorLabe l.getFont().getStyle() | java.awt.Font.BOLD));

vendorLabel.setText(resourceMap.getString("vendorLabel.text")); // NOI18N

vendorLabel.setName("vendorLabel"); // NOI18N

appVendorLabel.setText(resourceMap.getString("Application.vendo r")); // NOI18N

appVendorLabel.setName("appVendorLabel"); // NOI18N

homepageLabel.setFont(homepageLabel.getFont().deriveFont(homepa geLabel.getFont().getStyle() | java.awt.Font.BOLD));

homepageLabel.setText(resourceMap.getString("homepageLabel.text ")); // NOI18N

homepageLabel.setName("homepageLabel"); // NOI18N

appHomepageLabel.setText(resourceMap.getString("Application.hom epage")); // NOI18N

(17)

appDescLabel.setText(resourceMap.getString("appDescLabel.text") ); // NOI18N

appDescLabel.setName("appDescLabel"); // NOI18N

imageLabel.setIcon(resourceMap.getIcon("imageLabel.icon")); // NOI18N

imageLabel.setName("imageLabel"); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING)

.addGroup(layout.createSequentialGroup() .addComponent(imageLabel)

.addGap(18, 18, 18)

.addGroup(layout.createParallelGroup(javax.swin g.GroupLayout.Alignment.TRAILING)

.addGroup(javax.swing.GroupLayout.Alignment .LEADING, layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(ja vax.swing.GroupLayout.Alignment.LEADING)

.addComponent(versionLabel) .addComponent(vendorLabel) .addComponent(homepageLabel)) .addPreferredGap(javax.swing.LayoutStyl e.ComponentPlacement.RELATED)

.addGroup(layout.createParallelGroup(ja vax.swing.GroupLayout.Alignment.LEADING)

.addComponent(appVersionLabel) .addComponent(appVendorLabel) .addComponent(appHomepageLabel))) .addComponent(appTitleLabel,

javax.swing.GroupLayout.Alignment.LEADING) .addComponent(appDescLabel, javax.swing.GroupLayout.Alignment.LEADING,

javax.swing.GroupLayout.DEFAULT_SIZE, 266, Short.MAX_VALUE) .addComponent(closeButton))

.addContainerGap()) );

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING)

.addComponent(imageLabel, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addContainerGap()

(18)

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED)

.addComponent(appDescLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swin g.GroupLayout.Alignment.BASELINE)

.addComponent(versionLabel) .addComponent(appVersionLabel))

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swin g.GroupLayout.Alignment.BASELINE)

.addComponent(vendorLabel) .addComponent(appVendorLabel))

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED)

.addGroup(layout.createParallelGroup(javax.swin g.GroupLayout.Alignment.BASELINE)

.addComponent(homepageLabel) .addComponent(appHomepageLabel))

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED, 19, Short.MAX_VALUE)

.addComponent(closeButton) .addContainerGap())

);

pack();

}// </editor-fold>

// Variables declaration - do not modify private javax.swing.JButton closeButton;

// End of variables declaration

}

4.

KeyGen.java

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

*/

/*

* KeyGen.java *

* Created on Dec 5, 2011, 6:24:03 AM */

package kriptoelgamal;

(19)

*

* @author Acer */

public class KeyGen extends javax.swing.JDialog {

private static int N = 0; /** Creates new form KeyGen */

public KeyGen(java.awt.Frame parent, boolean modal) { super(parent, modal);

initComponents(); }

/** This method is called from within the constructor to * initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor. */

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel();

batasAtas = new javax.swing.JTextField(); batalBtn = new javax.swing.JButton(); bangkitBtn = new javax.swing.JButton(); jLabel4 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING _ON_CLOSE);

org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(kriptoelgamal. KriptoElGamalApp.class).getContext().getResourceMap(KeyGen.clas s);

setTitle(resourceMap.getString("keyGenForm.title")); // NOI18N

setName("keyGenForm"); // NOI18N setResizable(false);

jPanel1.setName("jPanel1"); // NOI18N

jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N

jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTE R);

jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N

(20)

batasAtas.setText(resourceMap.getString("batasAtas.text")); // NOI18N

batasAtas.setName("batasAtas"); // NOI18N

batalBtn.setText(resourceMap.getString("batalBtn.text")); // NOI18N

batalBtn.setName("batalBtn"); // NOI18N batalBtn.addActionListener(new

java.awt.event.ActionListener() { public void

actionPerformed(java.awt.event.ActionEvent evt) { batalBtnActionPerformed(evt); }

});

bangkitBtn.setText(resourceMap.getString("bangkitBtn.text")); // NOI18N

bangkitBtn.setName("bangkitBtn"); // NOI18N bangkitBtn.addActionListener(new

java.awt.event.ActionListener() { public void

actionPerformed(java.awt.event.ActionEvent evt) { bangkitBtnActionPerformed(evt); }

});

jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N

jLabel4.setBorder(javax.swing.BorderFactory.createBevelBorder(j avax.swing.border.BevelBorder.LOWERED));

jLabel4.setName("jLabel4"); // NOI18N

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.TRAILING, false)

.addComponent(batasAtas, javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment .LEADING, jPanel1Layout.createSequentialGroup()

.addComponent(bangkitBtn)

.addPreferredGap(javax.swing.LayoutStyl e.ComponentPlacement.RELATED,

(21)

.addComponent(batalBtn)) .addComponent(jLabel1,

javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap())

.addComponent(jLabel4,

javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE) );

jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {bangkitBtn, batalBtn});

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()

.addComponent(jLabel1) .addGap(18, 18, 18) .addComponent(batasAtas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(11, 11, 11)

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(bangkitBtn) .addComponent(batalBtn))

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED, 18, Short.MAX_VALUE)

.addComponent(jLabel4)) );

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING)

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) );

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING)

(22)

);

pack();

}// </editor-fold>

private void

batalBtnActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

keyAtDisposal(); dispose();

}

private void

bangkitBtnActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

try {

N = Integer.parseInt(batasAtas.getText()); if (N>4 && 176867884>N) dispose();

else jLabel4.setText("Input 5=<N=<176867883"); }

catch (java.lang.Exception e) {

jLabel4.setText("Input N hanya untuk bilangan integer");

}

}

static int getBatasAtas() { return N;

}

static void keyAtDisposal(){ N=0;

} /**

* @param args the command line arguments */

public static void main(String args[]) { /* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/ plaf.html

*/ try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

(23)

} }

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(KeyGen.class.getName()).log( java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(KeyGen.class.getName()).log( java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(KeyGen.class.getName()).log( java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(KeyGen.class.getName()).log( java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the dialog */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

KeyGen dialog = new KeyGen(new javax.swing.JFrame(), true);

dialog.addWindowListener(new java.awt.event.WindowAdapter() {

@Override public void

windowClosing(java.awt.event.WindowEvent e) { System.exit(0);

} });

dialog.setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JButton bangkitBtn;

private javax.swing.JButton batalBtn; private javax.swing.JTextField batasAtas; private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel1;

// End of variables declaration }

5.

Enkripsi.java

(24)

* To change this template, choose Tools | Templates * and open the template in the editor.

*/

/*

* Enkripsi.java *

* Created on Dec 5, 2011, 1:18:36 PM */

package kriptoelgamal;

/** *

* @author Acer */

public class Enkripsi extends javax.swing.JDialog {

private static String pesanPlain = null;

private static int [] kunciEnkripsi = {0, 0, 0};

static String getPlainteks() { return pesanPlain;

}

static int[] getKunciEnkripsi() { return kunciEnkripsi;

}

static void enkripsiAtDisposal() { pesanPlain = null;

}

static void setKunciE(int p, int alpha, int y) { kunciEnkripsi[0] = p;

kunciEnkripsi[1] = alpha; kunciEnkripsi[2] = y; }

/** Creates new form Enkripsi */

public Enkripsi(java.awt.Frame parent, boolean modal) { super(parent, modal);

initComponents(); }

/** This method is called from within the constructor to * initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor. */

(25)

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jLabel2 = new javax.swing.JLabel();

jScrollPane1 = new javax.swing.JScrollPane(); plainteks = new javax.swing.JTextArea(); jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); kunciP = new javax.swing.JTextField(); kunciAlpha = new javax.swing.JTextField(); kunciY = new javax.swing.JTextField(); batalBtn = new javax.swing.JButton(); enkripsiBtn = new javax.swing.JButton(); jLabel6 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING _ON_CLOSE);

org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(kriptoelgamal. KriptoElGamalApp.class).getContext().getResourceMap(Enkripsi.cl ass);

setTitle(resourceMap.getString("EnkripsiForm.title")); // NOI18N

setName("EnkripsiForm"); // NOI18N setResizable(false);

jLabel2.setFont(resourceMap.getFont("jLabel2.font")); // NOI18N

jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N

jLabel2.setName("jLabel2"); // NOI18N

jScrollPane1.setName("jScrollPane1"); // NOI18N

plainteks.setColumns(20); plainteks.setRows(5);

plainteks.setName("plainteks"); // NOI18N jScrollPane1.setViewportView(plainteks);

jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder( resourceMap.getString("jPanel1.border.title"))); // NOI18N jPanel1.setFont(resourceMap.getFont("jPanel1.font")); // NOI18N

jPanel1.setName("jPanel1"); // NOI18N

jLabel3.setFont(resourceMap.getFont("jLabel3.font")); // NOI18N

jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N

(26)

jLabel4.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N

jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N

jLabel4.setName("jLabel4"); // NOI18N

jLabel5.setFont(resourceMap.getFont("jLabel5.font")); // NOI18N

jLabel5.setText(resourceMap.getString("jLabel5.text")); // NOI18N

jLabel5.setName("jLabel5"); // NOI18N

kunciP.setText(String.valueOf(kunciEnkripsi[0])); kunciP.setName("kunciP"); // NOI18N

kunciAlpha.setText(String.valueOf(kunciEnkripsi[1])); kunciAlpha.setName("kunciAlpha"); // NOI18N

kunciY.setText(String.valueOf(kunciEnkripsi[2])); kunciY.setName("kunciY"); // NOI18N

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap()

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel3) .addComponent(jLabel4) .addComponent(jLabel5)) .addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.LEADING)

.addComponent(kunciY,

javax.swing.GroupLayout.DEFAULT_SIZE, 108, Short.MAX_VALUE) .addComponent(kunciAlpha,

javax.swing.GroupLayout.DEFAULT_SIZE, 108, Short.MAX_VALUE) .addComponent(kunciP,

javax.swing.GroupLayout.DEFAULT_SIZE, 108, Short.MAX_VALUE)) .addContainerGap())

);

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.BASELINE)

(27)

.addComponent(kunciP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel4) .addComponent(kunciAlpha, javax.swing.GroupLayout.PREFERRED_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel5) .addComponent(kunciY, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addContainerGap(javax.swing.GroupLayout.DEFAUL T_SIZE, Short.MAX_VALUE))

);

batalBtn.setText(resourceMap.getString("batalBtn.text")); // NOI18N

batalBtn.setName("batalBtn"); // NOI18N batalBtn.addActionListener(new

java.awt.event.ActionListener() { public void

actionPerformed(java.awt.event.ActionEvent evt) { batalBtnActionPerformed(evt); }

});

enkripsiBtn.setText(resourceMap.getString("enkripsiBtn.text")); // NOI18N

enkripsiBtn.setName("enkripsiBtn"); // NOI18N enkripsiBtn.addActionListener(new

java.awt.event.ActionListener() { public void

actionPerformed(java.awt.event.ActionEvent evt) { enkripsiBtnActionPerformed(evt); }

});

jLabel6.setText(resourceMap.getString("jLabel6.text")); // NOI18N

(28)

jLabel6.setName("jLabel6"); // NOI18N

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILIN G, layout.createSequentialGroup()

.addGap(10, 10, 10)

.addGroup(layout.createParallelGroup(javax.swin g.GroupLayout.Alignment.LEADING)

.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING,

javax.swing.GroupLayout.DEFAULT_SIZE, 232, Short.MAX_VALUE) .addComponent(jLabel2)

.addGroup(javax.swing.GroupLayout.Alignment .TRAILING, layout.createSequentialGroup()

.addComponent(enkripsiBtn)

.addPreferredGap(javax.swing.LayoutStyl e.ComponentPlacement.RELATED)

.addComponent(batalBtn)) .addComponent(jPanel1,

javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap())

.addComponent(jLabel6,

javax.swing.GroupLayout.Alignment.TRAILING,

javax.swing.GroupLayout.DEFAULT_SIZE, 252, Short.MAX_VALUE) );

layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {batalBtn, enkripsiBtn});

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING)

.addGroup(layout.createSequentialGroup() .addContainerGap()

.addComponent(jLabel2)

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED)

(29)

.addGroup(layout.createParallelGroup(javax.swin g.GroupLayout.Alignment.BASELINE)

.addComponent(batalBtn) .addComponent(enkripsiBtn))

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED, 33, Short.MAX_VALUE)

.addComponent(jLabel6)) );

pack();

}// </editor-fold>

private void

batalBtnActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

enkripsiAtDisposal(); dispose();

}

private void

enkripsiBtnActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

try {

pesanPlain = plainteks.getText(); kunciEnkripsi[0] =

Integer.parseInt(kunciP.getText()); kunciEnkripsi[1] =

Integer.parseInt(kunciAlpha.getText()); kunciEnkripsi[2] =

Integer.parseInt(kunciY.getText()); dispose();

}

catch (java.lang.Exception e) {

jLabel6.setText("kunci hanya untuk bilangan."); }

}

/**

* @param args the command line arguments */

public static void main(String args[]) { /* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/ plaf.html

*/ try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

(30)

javax.swing.UIManager.setLookAndFeel(info.getClassName()); break;

} }

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Enkripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Enkripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Enkripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Enkripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the dialog */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

Enkripsi dialog = new Enkripsi(new javax.swing.JFrame(), true);

dialog.addWindowListener(new java.awt.event.WindowAdapter() {

@Override public void

windowClosing(java.awt.event.WindowEvent e) { System.exit(0);

} });

dialog.setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JButton batalBtn;

private javax.swing.JButton enkripsiBtn; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JPanel jPanel1;

(31)

private javax.swing.JTextField kunciP; private javax.swing.JTextField kunciY; private javax.swing.JTextArea plainteks;

// End of variables declaration }

6.

Dekripsi.java

/*

* To change this template, choose Tools | Templates * and open the template in the editor.

*/

/*

* Dekripsi.java *

* Created on Dec 5, 2011, 2:19:10 PM */

package kriptoelgamal;

/** *

* @author Acer */

public class Dekripsi extends javax.swing.JDialog {

private static String pesanCipher = null; private static int [] kunciDekripsi = {0, 0};

static String getCipherteks() { return pesanCipher;

}

static int[] getKunciDekripsi() { return kunciDekripsi;

}

static void dekripsiAtDisposal() { pesanCipher = null;

}

static void setCipher(String cipherStr) { pesanCipher = cipherStr;

}

static void setKunciD(int p, int a) { kunciDekripsi [0] =a;

kunciDekripsi [1] =p; }

/** Creates new form Dekripsi */

public Dekripsi(java.awt.Frame parent, boolean modal) { super(parent, modal);

(32)

}

/** This method is called from within the constructor to * initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor. */

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

jPanel1 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel();

jScrollPane1 = new javax.swing.JScrollPane(); cipherteks = new javax.swing.JTextArea(); jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel(); kunciA = new javax.swing.JTextField(); kunciP = new javax.swing.JTextField(); batalBtn = new javax.swing.JButton(); dekripsiBtn = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING _ON_CLOSE);

org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(kriptoelgamal. KriptoElGamalApp.class).getContext().getResourceMap(Dekripsi.cl ass);

setTitle(resourceMap.getString("DekripsiForm.title")); // NOI18N

setName("DekripsiForm"); // NOI18N setResizable(false);

jPanel1.setName("jPanel1"); // NOI18N

jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT) ;

jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N

jLabel1.setBorder(javax.swing.BorderFactory.createBevelBorder(j avax.swing.border.BevelBorder.LOWERED));

jLabel1.setName("jLabel1"); // NOI18N

jLabel2.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N

jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N

(33)

jScrollPane1.setName("jScrollPane1"); // NOI18N

cipherteks.setColumns(20); cipherteks.setRows(5);

cipherteks.setText(pesanCipher);

cipherteks.setName("cipherteks"); // NOI18N jScrollPane1.setViewportView(cipherteks);

jLabel3.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N

jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N

jLabel3.setName("jLabel3"); // NOI18N

jLabel4.setFont(resourceMap.getFont("jLabel4.font")); // NOI18N

jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N

jLabel4.setName("jLabel4"); // NOI18N

kunciA.setText(String.valueOf(kunciDekripsi[0])); kunciA.setName("kunciA"); // NOI18N

kunciP.setText(String.valueOf(kunciDekripsi[1])); kunciP.setName("kunciP"); // NOI18N

batalBtn.setText(resourceMap.getString("batalBtn.text")); // NOI18N

batalBtn.setName("batalBtn"); // NOI18N batalBtn.addActionListener(new

java.awt.event.ActionListener() { public void

actionPerformed(java.awt.event.ActionEvent evt) { batalBtnActionPerformed(evt); }

});

dekripsiBtn.setText(resourceMap.getString("dekripsiBtn.text")); // NOI18N

dekripsiBtn.setName("dekripsiBtn"); // NOI18N dekripsiBtn.addActionListener(new

java.awt.event.ActionListener() { public void

actionPerformed(java.awt.event.ActionEvent evt) { dekripsiBtnActionPerformed(evt); }

});

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

(34)

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILIN G, jPanel1Layout.createSequentialGroup()

.addGap(10, 10, 10)

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING,

javax.swing.GroupLayout.DEFAULT_SIZE, 228, Short.MAX_VALUE) .addComponent(jLabel2)

.addGroup(jPanel1Layout.createSequentialGro up()

.addGroup(jPanel1Layout.createParallelG roup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel3) .addComponent(jLabel4)) .addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelG roup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(kunciP,

javax.swing.GroupLayout.DEFAULT_SIZE, 157, Short.MAX_VALUE) .addComponent(kunciA,

javax.swing.GroupLayout.DEFAULT_SIZE, 157, Short.MAX_VALUE))) .addGroup(javax.swing.GroupLayout.Alignment .TRAILING, jPanel1Layout.createSequentialGroup()

.addComponent(dekripsiBtn)

.addPreferredGap(javax.swing.LayoutStyl e.ComponentPlacement.RELATED)

.addComponent(batalBtn))) .addContainerGap())

.addComponent(jLabel1,

javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) );

jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {batalBtn, dekripsiBtn});

jPanel1Layout.setVerticalGroup(

jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING)

.addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAUL T_SIZE, Short.MAX_VALUE)

.addComponent(jLabel2)

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.RELATED)

(35)

javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel3) .addComponent(kunciA, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.Compon entPlacement.UNRELATED)

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel4) .addComponent(kunciP, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup(jav ax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(batalBtn) .addComponent(dekripsiBtn)) .addGap(26, 26, 26)

.addComponent(jLabel1)) );

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING)

.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,

javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) );

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING)

.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) );

pack();

}// </editor-fold>

private void

(36)

dekripsiAtDisposal(); dispose();

}

private void

dekripsiBtnActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:

try {

kunciDekripsi[0] = Integer.parseInt(kunciA.getText()); kunciDekripsi[1] = Integer.parseInt(kunciP.getText());

pesanCipher = cipherteks.getText(); dispose();

}

catch (java.lang.Exception e) {

jLabel1.setText("kunci hanya untuk bilangan"); }

}

/**

* @param args the command line arguments */

public static void main(String args[]) { /* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/ plaf.html

*/ try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName()); break;

} }

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Dekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Dekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

(37)

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Dekripsi.class.getName()).lo g(java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the dialog */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

Dekripsi dialog = new Dekripsi(new javax.swing.JFrame(), true);

dialog.addWindowListener(new java.awt.event.WindowAdapter() {

@Override public void

windowClosing(java.awt.event.WindowEvent e) { System.exit(0);

} });

dialog.setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swing.JButton batalBtn;

private javax.swing.JTextArea cipherteks; private javax.swing.JButton dekripsiBtn; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JPanel jPanel1;

private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextField kunciA;

private javax.swing.JTextField kunciP;

(38)

DEC SYMBOL DESCRYPTION

0 NUL Null char

1 SCH Start of Heading

2 STX Start of Text

3 ETX End of Text

4 EOT End of Transmission

5 ENQ Enquiry

6 ACK Acknowledgement

7 BEL Bell

8 BS Back Space

9 HT Horizontal Tab

10 LF Line Feed

11 VT Vertical Tab

12 FF Form Feed

13 CR Carriage Return

14 SO Shift Out / X-On

15 SI Shift In / X-Off

16 DLE Data Line Escape

17 DC1 Device Control 1 (oft. XON)

18 DC2 Device Control 2

19 DC3 Device Control 3 (XOFF)

20 DC4 Device Control 4

21 NAK Negativa Acknowledgement

22 SYN Synchronous Idle

23 ETB End of Transmit Block

24 CAN Cancel

25 EM End of Medium

26 SUB Substitute

27 ESC Escape

28 FS File Separator

29 GS Group Separator

30 RS Record Separator

31 US Unit Separator

32 Space

33 ! Exclamation mark

34 Ŗ Double quotes (or speech marks)

35 # Number

36 $ Dollar

37 % Procenttecken

38 & Ampersand

39 Ř Single quote

40 ( Open parenthesis (or open bracket) 41 ) Close parenthesis (or close bracket)

42 * Asterisk

43 + Plus

(39)

45 - Hyphen

46 . Period, dot or full stop

47 / Slash or divide

48 0 Zero

49 1 One

50 2 Two

51 3 Three

52 4 Four

53 5 Five

54 6 Six

55 7 Seven

56 8 Eight

57 9 Nine

58 : Colon

59 ; Semicolon

60 < Less than (or open angled bracket)

61 = Equals

62 > Greater than (or close angeled bracket)

63 ? Question mark

64 @ At symbol

65 A Uppercase A

66 B Uppercase B

67 C Uppercase C

68 D Uppercase D

69 E Uppercase E

70 F Uppercase F

71 G Uppercase G

72 H Uppercase H

73 I Uppercase I

74 J Uppercase J

75 K Uppercase K

76 L Uppercase L

77 M Uppercase M

78 N Uppercase N

79 O Uppercase O

80 P Uppercase P

81 Q Uppercase Q

82 R Uppercase R

83 S Uppercase S

84 T Uppercase T

85 U Uppercase U

86 V Uppercase V

87 W Uppercase W

88 X Uppercase X

89 Y Uppercase Y

90 Z Uppercase Z

91 [ Openeing bracket

92 \ Backslash

93 ] Closing bracket

94 ^ Caret Ŕ circumflex

95 _ Underscore

(40)

97 a Lowercase a

98 b Lowercase b

99 c Lowercase c

100 d Lowercase d

101 e Lowercase e

102 f Lowercase f

103 g Lowercase g

104 h Lowercase h

105 i Lowercase i

106 j Lowercase j

107 k Lowercase k

108 l Lowercase l

109 m Lowercase m

110 n Lowercase n

111 o Lowercase o

112 p Lowercase p

113 q Lowercase q

114 r Lowercase r

115 s Lowercase s

116 t Lowercase t

117 u Lowercase u

118 v Lowercase v

119 w Lowercase w

120 x Lowercase x

121 y Lowercase y

122 z Lowercase z

123 { Opening brace

124 | Vertical bar

125 } Closing brace

126 ~ Equivalency sign Ŕ tilde

127 Delete

128 € Euro sign

129

130 ‚ Single low-9 quotation mark

131 ƒ Latin small letter f with hook

132 „ Double low-9 quotation mark

133 … Horizontal ellipsis

134 † Dagger

135 ‡ Double dagger

136 ˆ Modified letter circumflex accent

137 ‰ Per mille sign

138 Š Latin capital letter S with caron 139 ‹ Single left-pointing angle quotation

140 Œ Latin capital ligature OE

141

142 Ţ Latin capital letter Z with caron 143

144

145 Ř Left single quotation mark

146 Ř Right single quotation mark

147 Ŗ Left double quotation mark

(41)

149 • Bullet

150 Ŕ En dash

151 ŕ Em dash

152 ˜ Small tilde

153 ™ Trade mark sign

154 š Latin small letter S with caron

155 › Single right-pointing angle quotation mark

156 œ Latin small ligature oe

157

158 ţ Latin small letter z with caron

159 Ÿ Latin capital letter Y with diaeresis

160 Non-breaking space

161 ¡ Inverted Exclamation mark

162 ¢ Cent sign

163 £ Pound sign

164 ¤ Currency sign

165 ¥ Yen sign

166 ¦ Pipe, Broken vertical bar

167 § Section sign

168 ¨ Spacing Diaeresis Ŕ umlaut

169 © Copyright sign

170 ª Feminine ordinanl indicator

171 « Left double angle quotes

172 ¬ Not sign

173 - Soft hyphen

174 ® Registered trade mark sign

175 ¯ Spacing macron Ŕ overline

176 ° Degree sign

177 ± Plus-or-minus sign

178 ² Superscript two Ŕ squared

179 ³ Superscript three - cubed

180 ´ Acute accent Ŕ spacing acute

181 µ Micro sign

182 ¶ Pilcrow sign Ŕ paragraph sign

183 · Middle dot Ŕ Georgian comma

184 ¸ Spacing cedilla

185 ¹ Superscript one

186 º Masculine ordinal indicator

187 » Right double angle quotes

188 ¼ Fraction one quarter

189 ½ Fraction one half

190 ¾ Fraction three quarter

191 ¿ Inverted question mark

192 À Latin capital letter A with grave 193 Á Latin capital letter A with acute 194 Â Latin capital letter A with circumflex 195 Ã Latin capital letter A with tilde 196 Ä Latin capital letter A with diaeresis 197 Å Latin capital letter A wih ring above

198 Æ Latin capital letter with AE

Gambar

TABEL KODE ASCII

Referensi

Dokumen terkait

Sistem yang telah dibuat akan diuji dengan membangkitkan banyak kunci dengan panjang yang berbeda pada algoritma ElGamal lalu melihat ketepatan dan kecepatan sistem yang

[r]

32 3.4 Analisa Data Analisa data adalah kegiatan mengubah data hasil penelitian menjadi informasi yang dapat digunakan untuk mengambil kesimpulan dalam suatu penelitian.Dalam

Untuk melakukan proses dekripsi dapat dilihat pada gambar 8 yang diawali dengan proses penginputan file hasil penyandian (ciphertext), kunci private serta

Observasi Yaitu pengumpulan data melalui pengamatan secara langsung terhadap cara kerja para pengguna fitur pengamaanan file data yaitu algoritma sistem kriptografi

Berdasarkan penelitian yang telah dilakukan dapat diambil beberapa kesimpulan Proses penerapan Algoritma Quicksort dengan cara melakukan pengacakan dan pengurutan nilai untuk

Istilah lain untuk algoritma kriptografi asimetri adalah kriptografi kunci publik (public key cryptography), sebab kunci untuk enkripsi tidak rahasia dan dapat diketahui oleh

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Pemurah dan Maha Penyayang dengan limpah karunia-Nya, skripsi ini berhasil diselesaikan dalam waktu yang telah