Senin, 12 Maret 2012

ENKRIPSI DAN DESKRIPSI PADA JAVA

Enkripsi  proses penggunaan algoritma yang kompleks untuk mengkonversi pesan ( plaintext ataucleartext ) ke suatu pesan terenkripsi ( chipertext ). Hal ini ditujukan untuk mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus . Enkripsi dapat digunakan untuk tujuan keamanan , tetapi teknik lain masih diperlukan untuk membuat komunikasi yang aman , terutama untuk memastikan integritas dan autentukasi dari sebuah pesan .

Deskripsi :  proses penggunaan algoritma yang kompleks untuk mengkonversi pesan terenkripsi ( chipertext ) ke suatu pesan ( plaintext atau cleartext ).
Dalam melakukan enkripsi plainteks dituliskan per kolom sesuai panjang kunci dan urutannya.. misalnya Plain Teks : Aku Bukanlah Dewa Kunci : kripto kemudian Kunci diberi indeks sesuai dengan urutan alfabet
k   r   i   p   t   o
2  5  1   4  6   3 Nah jika kita sudah memberikan indeks pada kunci, kemudian kita akan membuat matriks dari plainteks dengan jumlah kolom sama dengan jumlah kunci
k    r    i    p    t    o
2    5    1    4    6    3
A    k    u    B    u    k
a    n    l    a    h    D
e    w    a    *    *    *
Dari matriks yang sudah dibuat maka kita dapat menentukan chiper teks berdasarkan nomor kolom pada index setiap kunci.
Kolom 1  (Kolom i )  : ula
Kolom 2 (Kolom k)   : Aae
Kolom 3 (kolom o)  : kD*
Kolom 4 (kolom p) : Ba*
Kolom 5 (kolom r) : knw
Kolom 6 (kolom t) : uh*
maka chiper teks nya : ulaAaekD*Ba*knwuh*
ketika sudah paham dengan teori nya , pertanyaannya sekarang bagaimana implementasi programnya ??? hehe implementasi programnya sangat mudah, kita hanya perlu memasukkan plainteks ke dalam matriks dua dimensi, kemudian mensorting berdasarkan index kuncin ya .

SWING PADA PEMOGRAMAN JAVA

Java Swing adalah library java yang digunkan untuk menciptakan Grafik User Interface (GUI). Dengan Java Swing kita dapat membuat user interface yang cross platform atau OS independent. Artinya user interface yang kita buat dapat dijalankan pada system operasi apa saja (OS yang suport Java) dengan tampilan yang relative sama. Bahkan kita dapat membuat user interface yang menyerupai Windows XP, Mac OS atau Linux tanpa tergantung dari OS yang kita gunakan.
Kelebihan Java SWING yaitu :
- Di bundle di dalam Java Development Kit
- Netral terhadap semua sistem operasi
- Mudah untuk dikembangkan


Komponen Dasar SWING yaitu:



  1. Top-level Container => merupakan container dasar di mana komponen lainnya diletakan. Contoh Top-level container ini adalah Frame, Dialog dan Applet yang diimplementasi dalam class JFrame, Jdialog, dan JApplet
  2. Intermediate Container => merupakan komponen perantara di mana komponen lainnya akan diletakan. Salah satu contoh container ini adalah class JPanel
  3. Atomic Component => merupakan komponen yang memiliki fungsi spesifik dan biasanya user berinteraksi langsung dengan komponen jenis ini. Contohnya adalah JButton, JLabel, JTextField, dan JTextArea
  4. Layout Manager => berfungsi untuk mengatur bagaimana posisi dari komponen – komponen yang diletakan pada container. Secara default terdapat 5 macam layout yaitu berupa class BorderLayout, BoxLayout, FlowLayout, GridBagLayout, dan GridLayout
  5. Event Handling => untuk menangani event yang dilakukan oleh user misalnya menekan tombol, mengkilik mouse dan lain – lain
Contoh Programnya :

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
class MyCanvas extends JComponent {
    public void paint(Graphics g) {
        g.setColor(Color.yellow);
        g.fillRect(((300-100)/2),((300-100)/2),75,75);
    }
}
public class RectButton {
    public static void main(String[] a) {
        ActionListener actionListener = new ActionListener() {
            public void actionPerformed(ActionEvent actionEvent) {
                System.exit(0);
            }
        }
        JFrame window = new JFrame("Contoh");
        JButton exitBtn = new JButton("EXIT");
        window.getContentPane().add(exitBtn, BorderLayout.SOUTH);
        exitBtn.addActionListener(actionListener);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setBounds(30, 30, 300, 300);
        window.getContentPane().add(new MyCanvas());
        window.setLocationRelativeTo(null);
        window.setVisible(true);
    }
}
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class temuTiga{
    private JTextField txtNim, txtNama, txtGender;
    private JFrame window;
    private JRadioButton satu, dua, tiga, empat;
    private JButton tampilkan, kosongkan, keluar;
    private JLabel lblNim, lblNama, lblGender;
    private ButtonGroup bgroup;
    private JPanel radioPanels, radioPanel;
    private String dataString [];
    private String stringData;
    public temuTiga(){
        dataString  = new String[3];
        window      = new JFrame("Contoh");
        satu        = new JRadioButton("Anggota Satu"  , true);
        dua         = new JRadioButton("Anggota Dua"   , false);
        tiga        = new JRadioButton("Anggota Tiga", false);
        empat       = new JRadioButton("Anggota Empat", false);
        tampilkan   = new JButton("Tampilkan");
        kosongkan   = new JButton("Kosongkan");
        keluar      = new JButton("Keluar");
        lblNim      = new JLabel("NIM");
        lblNama     = new JLabel("Nama");
        lblGender   = new JLabel("Jenis Kelamin");
        txtNim      = new JTextField(15);
        txtNama     = new JTextField(15);
        txtGender   = new JTextField(15);
        bgroup      = new ButtonGroup();
        radioPanel  = new JPanel();
        radioPanels = new JPanel();

        stringData  = "||";
        dataString[0] = "2990778";
        dataString[1] = "imaduddin";
        dataString[2] = "laki-laki";

        satu.addActionListener(new ActionListener() {
            public vnid actionPerformed(ActionEvent evt) {
                rdP(1);
            }
        });

        dua.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(2);
            }
        });

        tiga.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(3);
            }
        });

        empat.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(4);
            }
        });

        tampilkan.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(5);
            }
        });

        kosongkan.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(6);
            }
        });

        keluar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                rdP(7);
            }
        });

        bgroup.add(satu);
        bgroup.add(dua);
        bgroup.add(tiga);
        bgroup.add(empat);

        radioPanel.setLayout(new GridLayout(2, 2));
        radioPanel.add(satu);
        radioPanel.add(dua);
        radioPanel.add(tiga);
        radioPanel.add(empat);

        radioPanels.setLayout(new GridLayout(5, 2, 4, 4));
        radioPanels.add(lblNim);
        radioPanels.add(txtNim);
        radioPanels.add(lblNama);
        radioPanels.add(txtNama);
        radioPanels.add(lblGender);
        radioPanels.add(txtGender);
        radioPanels.add(tampilkan);
        radioPanels.add(kosongkan);
        radioPanels.add(keluar);

        radioPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Anggota"));
        radioPanels.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Data"));
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setBounds(30, 30, 605, 200);
        window.getContentPane().add(radioPanel, BorderLayout.WEST);
        window.getContentPane().add(radioPanels, BorderLayout.EAST);
        window.setLocationRelativeTo(null);
        window.setVisible(true);
    }
    private void rdP(int radioB){
        if(radioB==1){
            dataString[0] = "2990779";
            dataString[1] = "indira";
            dataString[2] = "Perempuan";
        }else if(radioB==2){
            dataString[0] = "2990778";
            dataString[1] = "imaduddin";
            dataString[2] = "Laki - Laki";
        }else if(radioB==3){
            dataString[0] = "2990777";
            dataString[1] = "ika rahma";
            dataString[2] = "Perempuan";
        }else if(radioB==4){
            dataString[0] = "2990780";
            dataString[1] = "intan";
            dataString[2] = "Perempuan";
        }else if(radioB==5){
            txtNim.setText(dataString[0]);
            txtNama.setText(dataString[1]);
            txtGender.setText(dataString[2]);
        }else if(radioB==6){
            stringData  = "||";
            txtNim.setText("");
            txtNama.setText("");
            txtGender.setText("");
        }else{
            System.exit(0);
        }
    }
    public static void main(String[] a) {
        temuTiga m = new temuTiga();
    }
}

EVENT HANDLING

Pada hari ini saya akan membuat sebuah Event Handling.Sebelumnya akan saya jelaskan apa itu Event Handling.Event Handling adalah konsep penanganan suatu aksi yang terjadi.Contohnya adalah seperti yang akan saya tulis pada source code di bawah ini adalah ketika buttonklik kita klik,maka akan terjadi suatu aksi,yaitu menampilkan sebuah pop up pesan.Event Handling tidak hanya button saja tapi juga bisa digunakan untuk komponen Swing lainnya.Java memiliki beberapa jenis Event Handling.Dan salah satunya adalah class Action Listener yang menangani aksi tombol ketika di klik.Seperti contoh di bawah ini :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class eventHandling extends JFrame implements ActionListener
{
    Container konten;
    //Deklarasi dan inisialisasi JButton
    private JButton btnklikMe = new JButton(“Klik aku”);
    //Membuat Konstruktor
    public eventHandling()
    {
        super(“Contoh Event Handling”);
        setVisible(true);
        setSize(400,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        konten = getContentPane();
        konten.setLayout(null);
        btnklikMe.setBounds(100,100,200,70);
        konten.add(btnklikMe);
        btnklikMe.addActionListener(this);
    } //Akhir Konstruktor
        public void actionPerformed(ActionEvent act)
        {
            Object obj = act.getSource();
            if(btnklikMe == obj)
            JOptionPane.showMessageDialog(null,”Halo,Apa Kabar”,”Pesan”,JOptionPane.INFORMATION_MESSAGE);
        }
    public static void main(String[] arr)
    {
        new eventHandling();
    }
}

KONSEP DASAR STREAM IO

Tipe-Tipe Stream yang Umum Digunakan :
stream karakter dan byte. Kita hanya mengulang perbedaan mendasar antara
keduanya. Stream byte adalah abstraksi file atau alat untuk data biner sedangkan
stream karakter adalah untuk karakter Unicode.
Class InputStream adalah abstraksi class root untuk semua input stream byte sedangkan
class OutputStream adalah class root abstraksi dari semua output stream byte. Untuk
stream karakter, superclasss yang sesuai dari semua class-class secara berturut-turut
adalah class Reader dan the Writer. Kedua class-class ini adalah abstraksi class-class
untuk membaca dan menulis stream karakter.
Stream juga dikategorikan berdasarkan apakah mereka digunakan untuk membaca atau
menulis stream.
Contoh Stream/IO :
import java.io.*;
class CopyFile {
void copy(String input, String output) {
FileReader reader;
FileWriter writer;
int data;
try {
reader = new FileReader(input);
writer = new FileWriter(output);
while ((data = reader.read()) != -1) {
writer.write(data);
}
reader.close();
writer.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
String inputFile = args[0];
String outputFile = args[1];
CopyFile cf = new CopyFile();
cf.copy(inputFile, outputFile);
}
}

MENGENAL SWT

SWT adalah GUI berbagai platform yang dikembangkan oleh IBM. Kenapa IBM membuat sistem GUI lain dan tidak menggunakan rangka kerja GUI yang sudah ada pada Java? Untuk menjawab pertanyaan ini, kita perlu melihat kilas balik tentang Java di awal perkembangannya.
Sun telah membuat rangka kerja GUI yang dinamakan AWT (Abstract Windowing Toolkit). Rangka kerja AWT menggunakan widget (komponen pada GUI, seperti tombol, menu, teks, dll) alami yang merupakan bawaan dari setiap sistem operasi. Akan tetapi widget tersebut memiliki masalah pada LCD. Masalah LCD ini mengakibatkan hilangnya beberapa fitur pada sistem operasi lain. Atau dengan kata lain, jika platform A memiliki widget 1 - 40 dan platform B memiliki widget 20 - 25, maka rangka kerja AWT hanya bisa digunakan untuk sebagian widget yang beririsan saja.
Untuk memecahkan masalah ini, Sun membuat rangka kerja baru yang merupakan emulasi widget, bukan menggunakan widget bawaan platform. Hal ini memecahkan masalah LCD dan memberikan rangka kerja yang kaya widget, akan tetapi masalah lain muncul. Misalnya, aplikasi Swing tidak lagi mirip seperti aplikasi lain pada platform di mana ia dijalankan.
Dengan adanya perbaikan pada JVM, aplikasi Swing tetap saja mengalami masalah kinerja karena sifatnya yang berupa emulasi. Hal ini tidak ditemukan pada widget bawaan platform karena widget ini lebih dekat dengan sistem operasi. Lebih jauh, aplikasi Swing menghabiskan lebih banyak memori yang tidak bisa digunakan untuk piranti kecil seperti PDA dan telepon genggam.
IBM memutuskan bahwa pendekatan tersebut tidak memenuhi kebutuhannya. Akhirnya, IBM membuat pustaka GUI baru yang disebut SWT, yang memecahkan masalah yang terdapat pada rangka kerja AWT dan Swing. Rangka kerja SWT langsung mengakses widget bawaan sistem operasi melalui JNI. Jika widget tersebut tidak tersedia, maka SWT akan mengemulasi widget yang hilang itu.

Konsep AWT

Aplikasi java dapat dibedakan menjadi 3 yaitu Java application , Java Applet dan servlet. Java application telah kita pelajari sebelumnya yang mana berjalan di command prompt dan bersifat text based, keculai aplikasi swing yang dapat mempunyai tampilan GUI.. Java Applet ialah aplikasi GUI yang berjalan di browser (IE,Netscape, Modzilla dan lain-lain ).  Sedangkan Java servlet ialah aplikasi yang berjalan di server. Pada awal kemunculan Java, java applet menjadi bahasa yang sangat popular untuk membuat situs web menjadi  lebih dinamis. Salah satu aplikasinya ialah  chatting , form input ke server dan tulisan yang bergerak bervariasi dengan warna-warni yang indah . materi AWT tetap diberikan di buku ini karena AWT masih tetap diperlukan dengan berbagai kelebihan dan kekurangannya di dalam pengembangan aplikasi web berbasiskan J2EE.
Abstract Windowing Toolkit (AWT) ialah sebuah API (Application Programming Interface) yang berfungsi untuk membuat aplkasi Graphical User Interface (GUI) yang merupakan bagian dari Java Foundation Classes (JFC). AWT menyertakan sekumpulan komponen untuk membangun grafik, event handling, perangkat gambar, layout manager dan mendukung arsitektur JavaBeans. Paket java.awt berisi seluruh kelas untuk membuat user interface dan gambar grafik serta image. Java applet mempunyai kemampuan untuk mencegah virus menempel di aplikasi kita, karena konsepnya ialah file.class (bytecode) itu diinterpretasi, bukan di eksekusi. Sehubungan dengan hal tersebut, beberapa batasan yang ada pada applet ialah :

  • applet tidak dapat membaca atau menulis system file
  • applet tidak dapat berkomunikasi dengan server lainnya
  • applet tidak dapat menjalankan program di sistem

Untuk membuat applet, dibutuhkan kelas-kelas yang mendukung berupa paket minimum yaitu java.awt.*  dan java.applet.* . Lambang * menandakan sertakan seluruh kelas  yang ada di dalam paket awt atau applet tersebut. Umumnya kelas untuk program applet merupakan turunan dari kelas Applet , yaitu bersumber dari paket java.applet.Applet.