Selasa, 14 Desember 2010

Aplikasi Enkripsi Sederhana Dengan Bahasa Pemrograman Java



Pada aplikasi ini akan dibahas sistem sandi klasik yaitu sistem Vigenere.Sistem ini ditemukan oleh seorang Perancis, Blaise de Vigenere (1523-1596). Sistem Vigenere menggunakan rangkaian huruf-huruf yang merupakan suatu kata : kata-kunci, yang dipakai berulang-ulang diseluruh teks berita. Panjang kata-kunci dinamakan periode.



Contoh: Sistem Vigenere dengan kata-kunci P A N G K A L dan transformasi (formula): S = T + K, Periode = 7

K: PANGKAL PANGKAL PANGKAL PANGKAL
T: tingkat presisi tinggit idakmun
S: IIAMUAE ERRYSST IIAMTIE XDNQWUY

Sistem Vigenere bisa bertahan hampir 300 tahunan, sampai seorang Mayor F.W. Kasiski pada tahun 1860’an berhasil memecahkan (cracked). Dengan teliti dan tajam ia mampu menangkap dalam teks sandinya keterulangan rangkaian huruf-huruf (repeated sequence) yang diartikan sebagai tanda adanya regularitas (keajekan) sehingga bisa diadakan pendekatan secara metodis/ilmiah. Pemikiran analitis mengenai sistem Vigenere tersebut dianggap pada masa itu sebagai sumbangan yang “revolusioner”.



Java adalah bahasa pemrograman yang berorientasi objek dan dapat dijalankan pada berbagai platform sistem operasi. Java adalah sebuah teknologi yang diperkenalkan oleh Sun Microsystems pada pertengahan tahun 1990. menurut definisi dari Sun. Java adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perangkat lunak pada komputer standalone ataupun pada lingkunan jaringan. Bahasa pemrograman java memiliki beberapa keunggulan, yaitu bersifat multiplatform, merupakan bahasa pemrograman berorientasi objek, library yang lengkap, bergaya C++, dan pengumpulan sampah otomatis. Kekurangannya adalah tidak kompatibel antara platform yang satu ke platform lainnya, mudah dibajak, penggunaan memori yang banyak.


Source Code

package JAVAGUE;

/*
* VIGENERECIPHER.java
*
*/


/**
*
* @author Guest
*/
public class VIGENERECIPHER_1 extends javax.swing.JFrame {

/** Creates new form VIGENERECIPHER */
public VIGENERECIPHER_1() {
super("JAVI");
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.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {

jInternalFrame1 = new javax.swing.JInternalFrame();
label1 = new java.awt.Label();
dimzplain = new java.awt.TextArea();
dimzcipher = new java.awt.TextArea();
dimzkey = new java.awt.TextArea();
label2 = new java.awt.Label();
label3 = new java.awt.Label();
label4 = new java.awt.Label();
pencetanencrypt = new java.awt.Button();
pencetandecrypt = new java.awt.Button();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jInternalFrame1.setBackground(new java.awt.Color(153, 153, 153));
jInternalFrame1.setVisible(true);

label1.setAlignment(java.awt.Label.CENTER);
label1.setFont(new java.awt.Font("Bauhaus 93", 0, 24)); // NOI18N
label1.setForeground(new java.awt.Color(0, 0, 102));
label1.setText("VIGENERE CIPHER");

dimzplain.setBackground(new java.awt.Color(204, 204, 255));

dimzcipher.setBackground(new java.awt.Color(204, 204, 255));

dimzkey.setBackground(new java.awt.Color(204, 204, 255));

label2.setAlignment(java.awt.Label.CENTER);
label2.setFont(new java.awt.Font("Berlin Sans FB Demi", 1, 12));
label2.setForeground(new java.awt.Color(0, 51, 102));
label2.setText("PLAINTEXT");

label3.setAlignment(java.awt.Label.CENTER);
label3.setFont(new java.awt.Font("Berlin Sans FB Demi", 1, 12));
label3.setForeground(new java.awt.Color(0, 51, 102));
label3.setText("CIPHERTEXT");

label4.setAlignment(java.awt.Label.CENTER);
label4.setFont(new java.awt.Font("Berlin Sans FB Demi", 1, 12));
label4.setForeground(new java.awt.Color(0, 51, 102));
label4.setText("KEY");

pencetanencrypt.setBackground(new java.awt.Color(102, 102, 102));
pencetanencrypt.setFont(new java.awt.Font("Bernard MT Condensed", 1, 12)); // NOI18N
pencetanencrypt.setLabel("ENCRYPT");
pencetanencrypt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
pencetanencryptActionPerformed(evt);
}
});

pencetandecrypt.setBackground(new java.awt.Color(102, 102, 102));
pencetandecrypt.setFont(new java.awt.Font("Bernard MT Condensed", 1, 12)); // NOI18N
pencetandecrypt.setLabel("DECRYPT");
pencetandecrypt.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
pencetandecryptActionPerformed(evt);
}
});

jLabel1.setBackground(new java.awt.Color(139, 97, 224));
jLabel1.setFont(new java.awt.Font("DejaVu Sans", 3, 18)); // NOI18N
jLabel1.setForeground(new java.awt.Color(55, 36, 80));
jLabel1.setText("KELOMPOK 1");

jLabel2.setBackground(new java.awt.Color(247, 240, 137));
jLabel2.setFont(new java.awt.Font("DejaVu Sans", 1, 14)); // NOI18N
jLabel2.setForeground(new java.awt.Color(54, 33, 67));
jLabel2.setText("TINGKAT 1 MANAJEMEN PERSANDIAN");

javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
jInternalFrame1Layout.setHorizontalGroup(
jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jInternalFrame1Layout.createSequentialGroup()
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addGap(40, 40, 40)
.addComponent(dimzplain, javax.swing.GroupLayout.PREFERRED_SIZE, 229, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(28, 28, 28)
.addComponent(dimzcipher, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addGap(108, 108, 108)
.addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(199, 199, 199)
.addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addGap(40, 40, 40)
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 91, Short.MAX_VALUE)
.addComponent(label4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addGap(55, 55, 55)
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(pencetandecrypt, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pencetanencrypt, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE))))
.addGap(180, 180, 180))
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addGap(19, 19, 19)
.addComponent(dimzkey, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap()))
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addGap(86, 86, 86)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 167, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(142, 142, 142)))
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addGap(46, 46, 46)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 295, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jInternalFrame1Layout.createSequentialGroup()
.addContainerGap(413, Short.MAX_VALUE)
.addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, 248, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(272, 272, 272))
);
jInternalFrame1Layout.setVerticalGroup(
jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(2, 2, 2)
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(label4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jInternalFrame1Layout.createSequentialGroup()
.addComponent(dimzkey, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pencetanencrypt, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(21, 21, 21)
.addComponent(pencetandecrypt, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(28, 28, 28)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(dimzplain, javax.swing.GroupLayout.DEFAULT_SIZE, 365, Short.MAX_VALUE)
.addComponent(dimzcipher, javax.swing.GroupLayout.DEFAULT_SIZE, 365, Short.MAX_VALUE))
.addContainerGap())
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jInternalFrame1)
.addGap(66, 66, 66))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jInternalFrame1)
.addContainerGap())
);

pack();
}//
//GEN-END:initComponents

private void pencetandecryptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pencetandecryptActionPerformed
// TODO add your handling code here:
dimzplain.setText( new Main().jiedecrypt(dimzcipher.getText(),dimzkey.getText()));
}//GEN-LAST:event_pencetandecryptActionPerformed

private void pencetanencryptActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pencetanencryptActionPerformed
// TODO add your handling code here:
dimzcipher.setText( new Main().jieencrypt(dimzplain.getText(),dimzkey.getText()));
}//GEN-LAST:event_pencetanencryptActionPerformed

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new VIGENERECIPHER_1().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private java.awt.TextArea dimzcipher;
private java.awt.TextArea dimzkey;
private java.awt.TextArea dimzplain;
private javax.swing.JInternalFrame jInternalFrame1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private java.awt.Label label1;
private java.awt.Label label2;
private java.awt.Label label3;
private java.awt.Label label4;
private java.awt.Button pencetandecrypt;
private java.awt.Button pencetanencrypt;
// End of variables declaration//GEN-END:variables

}

Tidak ada komentar:

Posting Komentar