Program Sandi Geser dan Vigenere

Beberapa mingu lalu aku ditugaskan untuk membuat program, terserah bebas. asal jangan kalkulator atau kamus haha selama GUI no problemo, aku baru buat sekitaran semingguan sebelum deadline kalo ga salah. udah galau banget mau buat apa. di News feed Facebook ku, aku melihat seseorang mahasiswi STSN yang ngestatus kalo anak anak sekolahnya mau buat try out.

akupun kepikiran buat bikin program sandi geser (Shift Caesar). karena gampang kan ya? cuma geser geser doang.

apalagi mengingat udah mengikuti dua kali saringan masuk STSN, yang terus ga lolos, dan mentok di kampus tercinta. akhirnya gw buat lah sebuah program persandian dengan looping yang boros wkwkwkwk.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class SandiGeser implements ActionListener {
public JLabel label1, label2, label3;
public JTextField textField1, textField2, textField3;
public JButton button1, button2, button3, button4;

public SandiGeser()
{

label1 = new JLabel(“PlainText”);
label1.setLocation(10, 10);
label1.setSize(label1.getPreferredSize());

textField1 = new JTextField(20);
textField1.setLocation(10, 25);
textField1.setSize(500,20);

label2 = new JLabel(“Key”);
label2.setLocation(10, 45);
label2.setSize(label2.getPreferredSize());

textField2 = new JTextField(20);
textField2.setLocation(10, 60);
textField2.setSize(500,20);

label3 = new JLabel(“ChiperText”);
label3.setLocation(10, 90);
label3.setSize(label3.getPreferredSize());

textField3 = new JTextField(20);
textField3.setLocation(10, 105);
textField3.setSize(500,20);
textField3.setEditable(false);

button1 = new JButton(“Enskripsi”);
button1.setLocation(570, 20);
button1.setSize(button1.getPreferredSize());
button1.addActionListener(this);
button1.setMnemonic(‘E’);

button2 = new JButton(“Dekripsi”);
button2.setLocation(570, 80);
button2.setSize(button1.getPreferredSize());
button2.addActionListener(this);
button2.setMnemonic(‘D’);
}

public void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(false);
JFrame frame = new JFrame(“Sandi Geser”);
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(label1);
frame.getContentPane().add(textField1);
frame.getContentPane().add(label2);
frame.getContentPane().add(textField2);
frame.getContentPane().add(label3);
frame.getContentPane().add(textField3);
frame.getContentPane().add(button1);
frame.getContentPane().add(button2);
frame.setBounds(0, 0, 750, 200);
frame.setLocationRelativeTo(null);

frame.setVisible(true);
}

public void actionPerformed(ActionEvent event) {
String a=””,c=””;
int jum,i,b=0;
try
{
a = textField1.getText();
a = a.toUpperCase();
b = Integer.parseInt(textField2.getText());
{
while (b>26)
{
b= b-26;
}
}
} catch (NumberFormatException nfe)
{}

JButton btn = (JButton) event.getSource();
if (btn == button1)
{
jum= a.length();
char arjum[] = new char[jum];
int angka [] = new int[jum];
int has [] = new int [jum];
char otput[] = new char [jum];
//Ubah menjadi Array Char
{
for (i=0;i<jum;i++)
{
arjum[i] = a.charAt(i);
}
}
//Ubah menjadi Kode ASCII
{
for (i=0;i<jum;i++)
{
angka[i] =((int)(arjum[i]));
}
}
//Mengubah ke Chipertaxt dengan tambahan Key
{
for (i=0;i<jum;i++)
{
has[i] =(((int)(arjum[i]))+b);
if (((int)(has[i]))>90)
{
has[i]=(64+(((int)(has[i]))-90));
}
}
}
//Array Chipertext
{
for (i=0;i<jum;i++)
{
otput[i] =((char)(has[i]));
}
}

String varString = new String(otput);
c = varString;
}
else if (btn == button2)
{
jum= a.length();
char arjum[] = new char[jum];
int angka [] = new int[jum];
int has [] = new int [jum];
char otput[] = new char [jum];
//Ubah menjadi Array Char
{
for (i=0;i<jum;i++)
{
arjum[i] = a.charAt(i);
}
}
//Ubah menjadi Kode ASCII
{
for (i=0;i<jum;i++)
{
angka[i] =((int)(arjum[i]));
}
}
//Mengubah ke Chipertaxt dengan tambahan Key
{
for (i=0;i<jum;i++)
{
has[i] =((angka[i])-b);
if (((int)(has[i]))<65)
{
has[i]=(90-(64-((int)(has[i]))));
}
}
}
//Array Chipertext
{
for (i=0;i<jum;i++)
{
otput[i] =((char)(has[i]));
}
}

String varString = new String(otput);
c = varString;
}
textField3.setText(c);
}

public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
SandiGeser app = new SandiGeser();
app.createAndShowGUI();
}
});
}
}

sebenernya waktu itu gw mau bikin 3 jenis sandi, yang satu lagi sandi permutasi. tapi sejauh yang gw buat ternyata program gw cuma bisa jalan dengan benar kalau

  1. Jumlah karakternya menunjukan bilangan yang bukan prima.
  2. jumlah baris dan kolomnya sama dengan jumlah karakter.

jadi ibarat kata gw masukin abcdefghijk dia outputnya jadi ngaco. Outputnya benar kalo gw input marianabuanitasaragi dengan jumlah kolom 5 atau 4, berarti yang input harus ngitung dulu jumlahnya karakternya berapa. ngerepotin toh?

OUTPUT:

pada nyadar ga itu program ngaco? wkwkwk

masa Encrypt sama decryptnya satu kotak dialog? wkwkwk, harus nya dia milih dulu ya kan, mau enkrip atau dekrip? malah disamain (~_~) bisa aja sih habis baca langsung ngasih balesan tapi aneh aja gw liatnya wkwkwkwk.

aneh kan aneh aneh.

satu hal lagi, gw ga bisa pake netBeans! kacau ya gk? soalnya ternyata pas aku coba, pas aku compile kerjaanku di netbeans, dia malah error coba? dibagian toUpperCase. gilo lah gw, akhirnya gw pake tampilan kalkulator sederhana gw ganti label labelnya. Angka1 jadi plaintext, angka2 jadi Key buttonnya gw kurangi 2, terus diganti nama buttonnya jadi encrypt sama decrypt wkwkwkw.

terus yang sandi Vigenere, gw ganti kodingan yang dulu jadi GUI. tadinya cuma kotak dialog pertanyaan ama input doang, gw jadiin GUI aja pokoknya sama pula’ tampilannya. ntah ga kreatif ntah mentok apa gw nii haha. pokoknya ini koding tiba tiba dah.

kelakuan emang.

oleh karena itu program sedang dalam perbaikan hehehe

Advertisements

2 thoughts on “Program Sandi Geser dan Vigenere

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s