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.
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] =
}
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
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
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,
.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});
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
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))
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();
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
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;
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;
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++){
}
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;
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 =
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
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()
.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;
*
* @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
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,
.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)
);
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())) {
} }
} 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
* 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. */
// <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
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)
.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
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)
.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()) {
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;
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);
}
/** 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
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);
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)
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
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) {
} 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;
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
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
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
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