• Tidak ada hasil yang ditemukan

Implementasi Algoritma Advanced Encryption Standard (AES) untuk Mengamankan File Gambar

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Advanced Encryption Standard (AES) untuk Mengamankan File Gambar"

Copied!
120
0
0

Teks penuh

(1)

A-1

LAMPIRAN A : LISTING PROGRAM

1. Form Home(FormImage.java)

/*

* To chanoe this license header, choose License Headers in Project Properties.

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

*/ packaoe cryptoimaoe; import java.awt.Toolkit; import java.awt.event.WindowEvent; import javax.swino.JFrame; /** *

* @author hyunsano */

public class FormImaoe extends javax.swino.JFrame { /**

* Creates new form FormImaoe */

//FormImaoe paoe;

public FormImaoe() { 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

* reoenerated by the Form Editor. */

@SuppressWarninos("unchecked")

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

private void initComponents() {

(2)

menuHome = new javax.swino.JMenu(); menuProo = new javax.swino.JMenu(); menuHelp = new javax.swino.JMenu();

setDefaultCloseOperation(javax.swino.WindowConstants.EXIT_ON_CL OSE);

setBackoround(new java.awt.Color(255, 250, 250)); setPreferredSize(new java.awt.Dimension(921, 386)); jLabel1.setIcon(new

javax.swino.ImaoeIcon("/home/hyunsano/NetBeansProjects/CryptoIm aoe/lo.pno")); // NOI18N

jLabel1.setText("jLabel1"); jLabel2.setIcon(new

javax.swino.ImaoeIcon("/home/hyunsano/NetBeansProjects/CryptoIm aoe/looo.pno")); // NOI18N

jLabel2.setVerifyInputWhenFocusTaroet(false);

jLabel3.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel3.setText("SKRIPSI");

jLabel4.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel4.setText("IMPLEMENTASI ALGORITMA ADVANCED ENCRYPTION STANDARD (AES) ");

jLabel5.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel5.setText("UNTUK MENGAMANKAN FILE GAMBAR");

jLabel6.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel6.setText("NURUL PUTRI YANTI");

jLabel7.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel7.setText("111401076");

jLabel8.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel8.setText("PROGRAM STUDI S1 ILMU KOMPUTER"); jLabel9.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel9.setText("FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI");

jLabel10.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel10.setText("UNIVERSITAS SUMATERA UTARA");

jLabel11.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

(3)

A-3

jLabel12.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N

jLabel12.setText("2015"); jMenuBar1.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

jMenuBar1MouseClicked(evt); }

});

menuHome.setBorder(javax.swino.BorderFactory.createLineBorder(n ew java.awt.Color(245, 243, 243), 2));

menuHome.setText("Home");

menuHome.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) { menuHomeMouseClicked(evt); } }); jMenuBar1.add(menuHome); menuProo.setBorder(javax.swino.BorderFactory.createLineBorder(n ew java.awt.Color(245, 243, 243), 2));

menuProo.setText("Prooram");

menuProo.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) { menuProoMouseClicked(evt); } }); jMenuBar1.add(menuProo); menuHelp.setBorder(javax.swino.BorderFactory.createLineBorder(n ew java.awt.Color(245, 243, 243), 2));

menuHelp.setText("Help");

menuHelp.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) { menuHelpMouseClicked(evt); } }); jMenuBar1.add(menuHelp); setJMenuBar(jMenuBar1);

javax.swino.GroupLayout layout = new javax.swino.GroupLayout(oetContentPane());

(4)

layout.createParallelGroup(javax.swino.GroupLayout.Alionment.LE ADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swino.G roupLayout.Alionment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax. swino.GroupLayout.Alionment.LEADING) .addGroup(layout.createSequentialGroup ()

.addGap(101, 101, 101)

.addGroup(layout.createParallelGro up(javax.swino.GroupLayout.Alionment.LEADING)

.addGroup(javax.swino.GroupLay out.Alionment.TRAILING, layout.createSequentialGroup()

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

.addGroup(javax.swino.GroupLay out.Alionment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createPar allelGroup(javax.swino.GroupLayout.Alionment.TRAILING) .addComponent(jLabel8) .addComponent(jLabel5)) .addGap(126, 126, 126)))) .addGroup(javax.swino.GroupLayout.Alio nment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGro up(javax.swino.GroupLayout.Alionment.LEADING) .addGroup(javax.swino.GroupLay out.Alionment.TRAILING, layout.createSequentialGroup() .addComponent(jLabel3) .addGap(240, 240, 240)) .addGroup(javax.swino.GroupLay out.Alionment.TRAILING, layout.createSequentialGroup()

.addComponent(jLabel6) .addGap(196, 196, 196)) .addGroup(javax.swino.GroupLay out.Alionment.TRAILING, layout.createSequentialGroup()

.addComponent(jLabel7) .addGap(234, 234, 234))))) .addComponent(jLabel1,

javax.swino.GroupLayout.PREFERRED_SIZE, 172, javax.swino.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup() .addGap(257, 257, 257)

.addComponent(jLabel2))

.addGroup(layout.createSequentialGroup() .addGap(155, 155, 155)

.addGroup(layout.createParallelGroup(javax. swino.GroupLayout.Alionment.LEADING)

.addComponent(jLabel9)

.addGroup(layout.createSequentialGroup ()

.addGap(89, 89, 89)

.addComponent(jLabel10)))) .addGroup(layout.createSequentialGroup()

(5)

A-5

.addGroup(layout.createParallelGroup(javax. swino.GroupLayout.Alionment.LEADING)

.addGroup(layout.createSequentialGroup ()

.addGap(12, 12, 12) .addComponent(jLabel12)) .addComponent(jLabel11)))) .addContainerGap(javax.swino.GroupLayout.DEFAULT_S IZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swino.GroupLayout.Alionment.LE ADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swino.G roupLayout.Alionment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(33, 33, 33)

.addComponent(jLabel1, javax.swino.GroupLayout.PREFERRED_SIZE, 162, javax.swino.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup() .addGap(50, 50, 50)

.addComponent(jLabel4)

.addPreferredGap(javax.swino.LayoutStyle.C omponentPlacement.RELATED)

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

.addPreferredGap(javax.swino.LayoutStyle.C omponentPlacement.RELATED)

.addComponent(jLabel7) .addGap(26, 26, 26) .addComponent(jLabel2))) .addGap(18, 18, 18)

(6)

private void jMenuBar1MouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: //dispose();

}

private void menuHomeMouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: }

private void menuProoMouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: dispose();

Framee paoe2 = new Framee(); paoe2.setVisible(true);

paoe2.setLocationRelativeTo(null); }

private void menuHelpMouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: dispose();

HelpFrame paoe3 = new HelpFrame(); paoe3.setVisible(true);

paoe3.setLocationRelativeTo(null); }

/**

* @param aros the command line arouments */

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

//<editor-fold defaultstate="collapsed" desc=" Look and feel settino 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/uiswino/lookandfeel/ plaf.html

*/ try {

for (javax.swino.UIManaoer.LookAndFeelInfo info : javax.swino.UIManaoer.oetInstalledLookAndFeels()) {

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

javax.swino.UIManaoer.setLookAndFeel(info.oetClassName()); break;

} }

} catch (ClassNotFoundException ex) {

java.util.loooino.Loooer.oetLoooer(FormImaoe.class.oetName()).l oo(java.util.loooino.Level.SEVERE, null, ex);

(7)

A-7

java.util.loooino.Loooer.oetLoooer(FormImaoe.class.oetName()).l oo(java.util.loooino.Level.SEVERE, null, ex);

} catch (IlleoalAccessException ex) {

java.util.loooino.Loooer.oetLoooer(FormImaoe.class.oetName()).l oo(java.util.loooino.Level.SEVERE, null, ex);

} catch (javax.swino.UnsupportedLookAndFeelException ex) { java.util.loooino.Loooer.oetLoooer(FormImaoe.class.oetName()).l oo(java.util.loooino.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

FormImaoe f = new FormImaoe(); f.setVisible(true); f.setSize(710, 700); f.setLocationRelativeTo(null); } }); }

// Variables declaration - do not modify private javax.swino.JLabel jLabel1; private javax.swino.JLabel jLabel10; private javax.swino.JLabel jLabel11; private javax.swino.JLabel jLabel12; private javax.swino.JLabel jLabel2; private javax.swino.JLabel jLabel3; private javax.swino.JLabel jLabel4; private javax.swino.JLabel jLabel5; private javax.swino.JLabel jLabel6; private javax.swino.JLabel jLabel7; private javax.swino.JLabel jLabel8; private javax.swino.JLabel jLabel9; private javax.swino.JMenuBar jMenuBar1; private javax.swino.JMenu menuHelp; private javax.swino.JMenu menuHome; private javax.swino.JMenu menuProo; // End of variables declaration }

2. Form Program (Framee.java)

/*

* To chanoe this license header, choose License Headers in Project Properties.

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

*/

packaoe cryptoimaoe;

import java.awt.imaoe.BufferedImaoe;

(8)

import java.util.Random; import javax.swino.*; import java.io.*; import java.security.Key; import java.security.SecureRandom; import java.text.DecimalFormat; import java.text.NumberFormat; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import javax.imaoeio.ImaoeIO; /** *

* @author hyunsano */

public class Framee extends javax.swino.JFrame { /**

* Creates new form Framee */

public Framee() { 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

* reoenerated by the Form Editor. */

@SuppressWarninos("unchecked") JLabel jlab = new JLabel (); JLabel jEnc = new JLabel (); JLabel jDec = new JLabel ();

BufferedImaoe imaoe,encImaoe,decImaoe,normalImaoe,NormalImaoe; int width;

int heioht;

public Strino dataAwal="",dataAkhir="";

byte[] encVal,decVal,val,Pix,tempEnc,tempDec; byte ImaoePix[],pixels[],acak[];

int A[] , tempKey; byte RandomNumber[] ; File out,output;

Strino namaFile,set,namEnc,namDec,K; int setNum = 0;

SecureRandom random ;

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

private void initComponents() {

(9)

A-9

ButDec = new javax.swino.JButton(); jLabel2 = new javax.swino.JLabel(); jLabel3 = new javax.swino.JLabel(); jLabel4 = new javax.swino.JLabel(); valKey = new javax.swino.JTextField();

jDesktopPane1 = new javax.swino.JDesktopPane(); encTime = new javax.swino.JTextField();

decTime = new javax.swino.JTextField(); jLabel5 = new javax.swino.JLabel(); jLabel6 = new javax.swino.JLabel(); jMenuBar1 = new javax.swino.JMenuBar(); menu1 = new javax.swino.JMenu();

menu2 = new javax.swino.JMenu(); menu3 = new javax.swino.JMenu();

setDefaultCloseOperation(javax.swino.WindowConstants.EXIT_ON_CL OSE);

setBackoround(new java.awt.Color(248, 244, 244)); setForeoround(java.awt.Color.white);

ButFile.setText("BROWSE"); ButFile.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

ButFileActionPerformed(evt); }

});

jLabel1.setBackoround(new java.awt.Color(225, 88, 88)); jLabel1.setForeoround(new java.awt.Color(33, 38, 208)); jLabel1.setText("NORMAL IMAGE");

ButEnc.setText("ENCRYPT"); ButEnc.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) { ButEncActionPerformed(evt); } }); ButDec.setText("DECRYPT"); ButDec.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

ButDecActionPerformed(evt); }

});

jLabel2.setForeoround(new java.awt.Color(13, 45, 238)); jLabel2.setText("ENCRYPT IMAGE");

jLabel3.setForeoround(new java.awt.Color(32, 13, 223)); jLabel3.setText("DECRYPT IMAGE");

(10)

jLabel4.setText("KEY LENGTH :");

jLabel5.setBackoround(new java.awt.Color(32, 76, 248)); jLabel5.setForeoround(new java.awt.Color(30, 55, 222)); jLabel5.setText("ENCRYPT TIME :");

jLabel6.setForeoround(new java.awt.Color(23, 19, 248)); jLabel6.setText("DECRYPT TIME");

menu1.setText("Home");

menu1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { menu1MouseClicked(evt); } }); jMenuBar1.add(menu1); menu2.setText("Prooram");

menu2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { menu2MouseClicked(evt); } }); jMenuBar1.add(menu2); menu3.setText("Help");

menu3.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { menu3MouseClicked(evt); } }); jMenuBar1.add(menu3); setJMenuBar(jMenuBar1);

javax.swino.GroupLayout layout = new javax.swino.GroupLayout(oetContentPane()); oetContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swino.GroupLayout.Alionment.LE ADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swino.G roupLayout.Alionment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(63, 63, 63)

.addComponent(ButFile, javax.swino.GroupLayout.PREFERRED_SIZE, 88, javax.swino.GroupLayout.PREFERRED_SIZE)

.addGap(162, 162, 162) .addComponent(ButEnc, javax.swino.GroupLayout.PREFERRED_SIZE, 88, javax.swino.GroupLayout.PREFERRED_SIZE)

(11)

A-11

.addComponent(ButDec, javax.swino.GroupLayout.PREFERRED_SIZE, 88, javax.swino.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup() .addGap(68, 68, 68)

.addComponent(jLabel1) .addGap(153, 153, 153) .addComponent(jLabel2, javax.swino.GroupLayout.PREFERRED_SIZE, 111, javax.swino.GroupLayout.PREFERRED_SIZE)

.addGap(132, 132, 132) .addComponent(jLabel3, javax.swino.GroupLayout.PREFERRED_SIZE, 117, javax.swino.GroupLayout.PREFERRED_SIZE))) .addContainerGap(javax.swino.GroupLayout.DEFAULT_S IZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(Pane, javax.swino.GroupLayout.PREFERRED_SIZE, 210, javax.swino.GroupLayout.PREFERRED_SIZE)

.addGap(35, 35, 35) .addComponent(PANEE,

javax.swino.GroupLayout.PREFERRED_SIZE, 210, javax.swino.GroupLayout.PREFERRED_SIZE)

.addGap(37, 37, 37) .addComponent(PANED, javax.swino.GroupLayout.PREFERRED_SIZE, 210, javax.swino.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swino.G roupLayout.Alionment.LEADING) .addGroup(layout.createSequentialGroup() .addPreferredGap(javax.swino.LayoutStyle.C omponentPlacement.RELATED, javax.swino.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jDesktopPane1, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE)

.addGap(31, 31, 31))

.addGroup(layout.createSequentialGroup()

.addPreferredGap(javax.swino.LayoutStyle.C omponentPlacement.RELATED, 15, Short.MAX_VALUE)

(12)

.addComponent(jLabel4, javax.swino.GroupLayout.PREFERRED_SIZE, 94, javax.swino.GroupLayout.PREFERRED_SIZE))

.addGap(0, 45, Short.MAX_VALUE)))) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swino.GroupLayout.Alionment.LE ADING) .addGroup(javax.swino.GroupLayout.Alionment.TRAILING, layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swino.G roupLayout.Alionment.TRAILING) .addGroup(layout.createSequentialGroup() .addGap(77, 77, 77)

.addComponent(jLabel4, javax.swino.GroupLayout.PREFERRED_SIZE, 27, javax.swino.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swino.LayoutStyle.C omponentPlacement.RELATED) .addComponent(valKey, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE)

.addGap(34, 34, 34)

.addGroup(layout.createParallelGroup(javax. swino.GroupLayout.Alionment.LEADING) .addComponent(jDesktopPane1, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel5)) .addGap(17, 17, 17)

(13)

A-13

.addComponent(Pane, javax.swino.GroupLayout.PREFERRED_SIZE, 300, javax.swino.GroupLayout.PREFERRED_SIZE) .addComponent(PANEE, javax.swino.GroupLayout.PREFERRED_SIZE, 300, javax.swino.GroupLayout.PREFERRED_SIZE) .addComponent(PANED, javax.swino.GroupLayout.PREFERRED_SIZE, 300, javax.swino.GroupLayout.PREFERRED_SIZE)))) .addPreferredGap(javax.swino.LayoutStyle.Component Placement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swino.G roupLayout.Alionment.LEADING, false) .addGroup(layout.createParallelGroup(javax.swi no.GroupLayout.Alionment.BASELINE) .addComponent(ButEnc) .addComponent(ButDec)) .addComponent(ButFile, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); pack(); }// </editor-fold>

private void ButFileActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handlino code here: //try{

if(valKey.oetText().equals("128") || valKey.oetText().equals("192") ||

valKey.oetText().equals("256")){

//if((tempKey/8) == 16 || (tempKey/8) == 24 || (tempKey/8) == 32){

JFileChooser s = new JFileChooser (); if (s.showOpenDialoo(ButFile) == JFileChooser.APPROVE_OPTION){

File f = s.oetSelectedFile(); try{

imaoe = ImaoeIO.read(f); namaFile = f.oetName(); } catch(Exception e){ } jlab.setIcon(new ImaoeIcon(f.toStrino())); jlab.setHorizontalAlionment(JLabel.CENTER); Pane.oetViewport().add(jlab); }

//catch(Exception e) {

(14)

}

//NormalImaoe = ImaoeIO.read(f); else{

JOptionPane.showMessaoeDialoo(null,"Key doesn't Match,Please Write 128 ,192 or 256");

} }

public void oenerateKey(){ K = valKey.oetText();

tempKey = Inteoer.parseInt(K); this.random = new SecureRandom(); this.acak = new byte[tempKey/8]; random.nextBytes(acak);

}

public void oetPixel() { oenerateKey();

try{

width = 0; heioht = 0;

set = Inteoer.toStrino(setNum); setNum++;

//File input = new File("T.jpo"); //imaoe = ImaoeIO.read(input); width += imaoe.oetWidth(); heioht += imaoe.oetHeioht(); //System.out.println(width); //System.out.println(heioht); int index = width*heioht; int count = 0;

this.pixels = new byte[width*heioht]; this.A = new int[width*heioht];

this.ImaoePix = new byte [width*heioht]; //A = null;

//ImaoePix = null; //pixels = null;

//byte[] DataImaoe = new byte[width*heioht]; try{

for (int i=0 ; i<width; i++){ for (int j=0; j<heioht; j++){

//A[count]=0;

A[count]=((imaoe.oetRGB(i, j)) / 256); //pixels[count] = 0;

pixels[count] =(byte) imaoe.oetRGB(i, j); //ImaoePix[count] = 0;

ImaoePix[count] = pixels[count]; //System.out.println(A[count]+" = "+ImaoePix[count]);

//dataAwal += Inteoer.toStrino(pixels[count]);

(15)

A-15

} } } catch(Exception e){ System.out.println("For Salah"); System.out.println(e.oetMessaoe()); }

System.out.println("Penoambilan Nilai Pixel Berhasil Alhamdulillah");

}

catch (Exception e){

System.out.println("Ini Salah"); System.out.println(e.oetMessaoe()); }

}

public void encrypt () throws Exception{ oetPixel();

//encVal = {(byte) 0}; namEnc = "Enc-"+set+".jpo"; try{

lono start = System.currentTimeMillis(); byte k[]=acak;

Strino aloo = "AES";

output = new File (namEnc); output.createNewFile();

//File normal = new File ("Normal.jpo"); encImaoe = new BufferedImaoe (width, heioht,TYPE_INT_RGB);

normalImaoe = new BufferedImaoe (width, heioht,TYPE_INT_RGB);

Key key = new SecretKeySpec (k, aloo); Cipher c = Cipher.oetInstance(aloo); c.init(Cipher.ENCRYPT_MODE, key);

int index =0; try{

//val = Pix;

encVal = c.doFinal(ImaoePix);

System.out.println("Encval did work"); }

catch(Exception q){

System.out.println(q.oetMessaoe());

System.out.println("Encval didi not work"); }

try{

(16)

//System.out.println("Encval ke-"+index+" = "+encVal[index]);

//normalImaoe.setRGB(x, y, ImaoePix[index]); //tempEnc[index] = 0;

//tempEnc[index] += encVal[index]; //encVal[index] = 0;

encImaoe.setRGB(x, y, encVal[index]); index++; } } System.out.println("Pass"); } catch(Exception e){ System.out.println(e.oetMessaoe());

System.out.println("Sepertinya For Salah"); }

try{

ImaoeIO.write(encImaoe, "JPG", output); lono end = System.currentTimeMillis();

NumberFormat time = new DecimalFormat("#0.00000"); lono t = end-start;

encTime.setText(Strino.valueOf(t/1000d)+" second"); System.out.print("Execution time is

"+time.format((end-start)/1000d)+"seconds");

//JOptionPane.showMessaoeDialoo(null,"Enkripsi Berhasil ");

System.out.println("Gambar Enkripsi Selesai"); }

catch (Exception e){

System.out.println(e.oetMessaoe());

System.out.println("Gambar Enkripsi tidak bisa Dicetak");

} /*try{

ImaoeIO.write(normalImaoe, "JPG", normal); System.out.println("Gambar Normal Selesai"); }

catch (Exception e){

System.out.println(e.oetMessaoe());

System.out.println("Gambar Normal Tidak Bisa Dicetak");

}*/ }

catch (Exception e){

System.out.println(e.oetMessaoe());

System.out.println("Enkripsi tidak bisa"); }

}

public void decrypt() throws Exception { namDec = "Dec-"+set+".jpo";

(17)

A-17

lono first = System.currentTimeMillis(); byte k[]=acak;

int DecVal[] = new int[width*heioht]; Strino aloo = "AES";

decImaoe = new BufferedImaoe (width, heioht,TYPE_INT_RGB);

Key key = new SecretKeySpec (k, aloo); Cipher c = Cipher.oetInstance(aloo); c.init(Cipher.DECRYPT_MODE, key); int in =0;

decVal = c.doFinal(encVal); for (int x = 0; x<width; x++){

for (int y=0 ; y<heioht ; y++){ //System.out.println(decVal[in]); //Strino tex;

// tex = new Strino(decVal[in]); //dataAkhir += tex;

//tempDec[in] = 0;

//tempDec[in] += decVal[in]; //DecVal[in] += 0;

DecVal[in] = ((A[in]*256) + decVal[in]); decImaoe.setRGB(x, y, DecVal[in]);

in++; } }

out = new File(namDec); out.createNewFile();

ImaoeIO.write(decImaoe, "JPG", out); lono last = System.currentTimeMillis();

NumberFormat time = new DecimalFormat("#0.00000"); lono ti = last-first;

decTime.setText(Strino.valueOf(ti/1000d)+" second"); System.out.print("Execution time is

"+time.format((last-first)/1000d)+"seconds");

System.out.println("Gambar Dekripsi Selesai"); }

catch(Exception ex){

System.out.println(ex.oetMessaoe());

System.out.println("Gambar Dekripsi tidak bisa Dicetak");

} }

private void ButEncActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handlino code here: try{

encrypt(); }

(18)

jEnc.setIcon(new ImaoeIcon(output.toStrino())); jEnc.setHorizontalAlionment(JLabel.CENTER); PANEE.oetViewport().add(jEnc);

}

private void ButDecActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handlino code here: try{ decrypt(); } catch(Exception e){ } jDec.setIcon(new ImaoeIcon(out.toStrino())); jDec.setHorizontalAlionment(JLabel.CENTER); PANED.oetViewport().add(jDec); }

private void menu1MouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: dispose();

FormImaoe HomePaoe = new FormImaoe(); HomePaoe.setVisible(true);

HomePaoe.setSize(710, 700);

HomePaoe.setLocationRelativeTo(null); setNum = 0;

//FormImaoe HomePaoe = new FormImaoe(); //HomePaoe.show();

}

private void menu2MouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: //Framee prooramPaoe = new Framee(); //prooramPaoe.show();

}

private void menu3MouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: dispose();

HelpFrame helpPaoe = new HelpFrame(); helpPaoe.setVisible(true);

helpPaoe.setLocationRelativeTo(null); setNum = 0;

} /**

* @param aros the command line arouments */

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

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

(19)

A-19

* For details see

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

*/ try {

for (javax.swino.UIManaoer.LookAndFeelInfo info : javax.swino.UIManaoer.oetInstalledLookAndFeels()) {

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

javax.swino.UIManaoer.setLookAndFeel(info.oetClassName()); break;

} }

} catch (ClassNotFoundException ex) {

java.util.loooino.Loooer.oetLoooer(Framee.class.oetName()).loo( java.util.loooino.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.loooino.Loooer.oetLoooer(Framee.class.oetName()).loo( java.util.loooino.Level.SEVERE, null, ex);

} catch (IlleoalAccessException ex) {

java.util.loooino.Loooer.oetLoooer(Framee.class.oetName()).loo( java.util.loooino.Level.SEVERE, null, ex);

} catch (javax.swino.UnsupportedLookAndFeelException ex) { java.util.loooino.Loooer.oetLoooer(Framee.class.oetName()).loo( java.util.loooino.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new Framee().setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swino.JButton ButDec; private javax.swino.JButton ButEnc; private javax.swino.JButton ButFile; public javax.swino.JScrollPane PANED; public javax.swino.JScrollPane PANEE; public javax.swino.JScrollPane Pane; private javax.swino.JTextField decTime; private javax.swino.JTextField encTime;

private javax.swino.JDesktopPane jDesktopPane1; private javax.swino.JLabel jLabel1;

private javax.swino.JLabel jLabel2; private javax.swino.JLabel jLabel3; private javax.swino.JLabel jLabel4; private javax.swino.JLabel jLabel5; private javax.swino.JLabel jLabel6; private javax.swino.JMenuBar jMenuBar1; private javax.swino.JMenu menu1;

(20)

private javax.swino.JMenu menu3;

private javax.swino.JTextField valKey; // End of variables declaration

}

3. Form Help (HelpFrame.java)

/*

* To chanoe this license header, choose License Headers in Project Properties.

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

*/

packaoe cryptoimaoe; /**

*

* @author hyunsano */

public class HelpFrame extends javax.swino.JFrame { /**

* Creates new form HelpFrame */

public HelpFrame() { 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

* reoenerated by the Form Editor. */

@SuppressWarninos("unchecked")

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

private void initComponents() {

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

(21)

A-21

jTextField7 = new javax.swino.JTextField(); jLabel2 = new javax.swino.JLabel();

jButton1 = new javax.swino.JButton(); jButton2 = new javax.swino.JButton();

jTextField9 = new javax.swino.JTextField(); jTextField10 = new javax.swino.JTextField(); jLabel3 = new javax.swino.JLabel();

jScrollPane2 = new javax.swino.JScrollPane(); jTextArea1 = new javax.swino.JTextArea(); jButton3 = new javax.swino.JButton();

jTextField11 = new javax.swino.JTextField(); jMenuBar1 = new javax.swino.JMenuBar(); Home = new javax.swino.JMenu();

Prooram = new javax.swino.JMenu(); Help = new javax.swino.JMenu();

setDefaultCloseOperation(javax.swino.WindowConstants.EXIT_ON _CLOSE);

jLabel1.setBackoround(new java.awt.Color(255, 245, 245));

jLabel1.setFont(new java.awt.Font("Courier 10 Pitch", 0, 14)); // NOI18N

jLabel1.setText("PROSEDUR PENGGUNAAN HALAMAN PROGRAM :");

jLabel1.setBorder(javax.swino.BorderFactory.createLineBorder (new java.awt.Color(108, 120, 193), 3));

jTextField1.setText("1. Klik Tombol Browse, Lalu Pilih Gambar yano akan Dienkripsi ");

jTextField2.setText("2. Gambar yano dipilih akan tampil di layar");

jTextField3.setText("3. Ketikkan besar kunci yano akan diounakan");

jTextField4.setText("4. Klik Tombol Encrypt untuk menoubah oambar menjadi sandi oambar");

jTextField5.setText("5. Sandi oambar hasil enkripsi akan muncul di layar ");

jTextField6.setText("6. Klik Tombol Decrypt untuk menoubah sandi oambar menjadi oambar asli");

(22)

jTextField7.addActionListener(new java.awt.event.ActionListener() {

public void

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

});

jLabel2.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N

jLabel2.setText("PROSEDUR PENGGUNAAN HALAMAN UTAMA :");

jLabel2.setBorder(javax.swino.BorderFactory.createLineBorder (new java.awt.Color(108, 120, 193), 3));

jButton1.setText("PROGRAM"); jButton2.setText("HELP");

jButton2.setPreferredSize(new java.awt.Dimension(72, 29));

jTextField9.setText("Menu untuk menampilkan halaman prooram");

jTextField10.setText("Menu untuk menampilkan halaman help");

jLabel3.setFont(new java.awt.Font("Courier New", 0, 14)); // NOI18N

jLabel3.setText("PROSEDUR PENGGUNAAN HALAMAN HELP :");

jLabel3.setBorder(javax.swino.BorderFactory.createLineBorder (new java.awt.Color(108, 120, 193), 3));

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

jTextArea1.setText("Halaman Ini menampilkan prosedur penoounaan setiap halaman yano terdapat\ndi dalam prooram ini, yaitu Home, Prooram dan Help.\n");

jScrollPane2.setViewportView(jTextArea1); jButton3.setText("HOME");

jButton3.setPreferredSize(new java.awt.Dimension(72, 29));

(23)

A-23

javax.swino.GroupLayout jPanel1Layout = new javax.swino.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swino.GroupLayout.Al ionment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel2)) .addGroup(jPanel1Layout.createSequentialGroup() .addGap(40, 40, 40)

.addGroup(jPanel1Layout.createParallelGroup( javax.swino.GroupLayout.Alionment.LEADING, false)

.addComponent(jButton3,

javax.swino.GroupLayout.DEFAULT_SIZE, 92, Short.MAX_VALUE) .addComponent(jButton1, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButton2, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, 18)

(24)

.addComponent(jTextField3, javax.swino.GroupLayout.Alionment.LEADING) .addComponent(jTextField4) .addComponent(jLabel1, javax.swino.GroupLayout.Alionment.LEADING) .addComponent(jTextField5) .addComponent(jTextField7, javax.swino.GroupLayout.PREFERRED_SIZE, 478, javax.swino.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabel3)) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swino.GroupLayout.Al ionment.LEADING) .addGroup(javax.swino.GroupLayout.Alionment.TRAI LING, jPanel1Layout.createSequentialGroup()

.addGap(49, 49, 49) .addComponent(jLabel2) .addGap(18, 18, 18)

.addGroup(jPanel1Layout.createParallelGroup( javax.swino.GroupLayout.Alionment.LEADING, false) .addComponent(jButton3, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jTextField11)) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup( javax.swino.GroupLayout.Alionment.BASELINE) .addComponent(jButton1) .addComponent(jTextField9, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup( javax.swino.GroupLayout.Alionment.BASELINE) .addComponent(jButton2, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE) .addComponent(jTextField10, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE))

(25)

A-25

.addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addComponent(jTextField1, javax.swino.GroupLayout.PREFERRED_SIZE, 25, javax.swino.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addComponent(jTextField2, javax.swino.GroupLayout.PREFERRED_SIZE, 25, javax.swino.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addComponent(jTextField3, javax.swino.GroupLayout.PREFERRED_SIZE, 25, javax.swino.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addComponent(jTextField4, javax.swino.GroupLayout.PREFERRED_SIZE, 25, javax.swino.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addComponent(jTextField5, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addComponent(jTextField6, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED) .addComponent(jTextField7, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.RELATED, 43, Short.MAX_VALUE)

.addComponent(jLabel3) .addPreferredGap(javax.swino.LayoutStyle.Com ponentPlacement.UNRELATED) .addComponent(jScrollPane2, javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE)

.addGap(22, 22, 22)) );

(26)

Home.addMouseListener(new java.awt.event.MouseAdapter() {

public void

mouseClicked(java.awt.event.MouseEvent evt) { HomeMouseClicked(evt);

} });

jMenuBar1.add(Home);

Prooram.setText("Prooram"); Prooram.addMouseListener(new java.awt.event.MouseAdapter() {

public void

mouseClicked(java.awt.event.MouseEvent evt) { ProoramMouseClicked(evt); }

});

jMenuBar1.add(Prooram); Help.setText("Help"); Help.addMouseListener(new java.awt.event.MouseAdapter() {

public void

mouseClicked(java.awt.event.MouseEvent evt) { HelpMouseClicked(evt);

} });

jMenuBar1.add(Help); setJMenuBar(jMenuBar1);

javax.swino.GroupLayout layout = new javax.swino.GroupLayout(oetContentPane());

oetContentPane().setLayout(layout); layout.setHorizontalGroup(

layout.createParallelGroup(javax.swino.GroupLayout.Alionment. LEADING)

.addGroup(layout.createSequentialGroup() .addComponent(jPanel1,

javax.swino.GroupLayout.PREFERRED_SIZE, javax.swino.GroupLayout.DEFAULT_SIZE, javax.swino.GroupLayout.PREFERRED_SIZE)

.addGap(0, 44, Short.MAX_VALUE)) );

layout.setVerticalGroup(

layout.createParallelGroup(javax.swino.GroupLayout.Alionment. LEADING)

(27)

A-27

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

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

); pack();

}// </editor-fold> private void

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

}

private void HomeMouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: dispose();

FormImaoe Home = new FormImaoe(); Home.setVisible(true);

Home.setSize(710, 700);

Home.setLocationRelativeTo(null); //FormImaoe Home = new FormImaoe(); //Home.show();

}

private void

ProoramMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handlino code here:

dispose();

Framee Prooram = new Framee();

Prooram.setLocationRelativeTo(null); Prooram.setVisible(true);

}

private void HelpMouseClicked(java.awt.event.MouseEvent evt) {

// TODO add your handlino code here: // HelpFrame Help = new HelpFrame();

//Help.show(); }

/**

* @param aros the command line arouments */

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

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

(28)

* For details see

http://download.oracle.com/javase/tutorial/uiswino/lookandfe el/plaf.html

*/ try {

for (javax.swino.UIManaoer.LookAndFeelInfo info : javax.swino.UIManaoer.oetInstalledLookAndFeels()) {

if ("Nimbus".equals(info.oetName())) { javax.swino.UIManaoer.setLookAndFeel(info.oetClassName());

break; }

}

} catch (ClassNotFoundException ex) {

java.util.loooino.Loooer.oetLoooer(HelpFrame.class.oetName()) .loo(java.util.loooino.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.loooino.Loooer.oetLoooer(HelpFrame.class.oetName()) .loo(java.util.loooino.Level.SEVERE, null, ex);

} catch (IlleoalAccessException ex) {

java.util.loooino.Loooer.oetLoooer(HelpFrame.class.oetName()) .loo(java.util.loooino.Level.SEVERE, null, ex);

} catch (javax.swino.UnsupportedLookAndFeelException ex) {

java.util.loooino.Loooer.oetLoooer(HelpFrame.class.oetName()) .loo(java.util.loooino.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() { public void run() {

new HelpFrame().setVisible(true); }

}); }

// Variables declaration - do not modify private javax.swino.JMenu Help;

(29)

A-29

private javax.swino.JMenuBar jMenuBar1; private javax.swino.JPanel jPanel1;

private javax.swino.JScrollPane jScrollPane2; private javax.swino.JTextArea jTextArea1; private javax.swino.JTextField jTextField1; private javax.swino.JTextField jTextField10; private javax.swino.JTextField jTextField11; private javax.swino.JTextField jTextField2; private javax.swino.JTextField jTextField3; private javax.swino.JTextField jTextField4; private javax.swino.JTextField jTextField5; private javax.swino.JTextField jTextField6; private javax.swino.JTextField jTextField7; private javax.swino.JTextField jTextField9; // End of variables declaration

(30)

LAMPIRAN B : CURRICULUM VITAE

Nama

: Nurul Putri Yanti

Alamat Sekarang

: Jln. Karya Rakyat no.58 Medan

Alamat Orang Tua

: Jln. Karya Rakyat no.58 Medan

Telp/ Hp

: 085276826672

Email

: 24.hyunsang@gmail.com

Riwayat Pendidikan

2011 – 2015

: S-1 Ilmu Komputer Universitas Sumatera Utara, Medan

2007 – 2010

: SMA Negeri 4 Medan

2004 – 2007

: SMP Negeri 16 Medan

1998 – 2004

: SD Negeri 060836 Medan

1997 – 1998

: TK Bina Nusa Medan

Keahlian

Bahasa

: Indonesia, Inggris

Bahasa Pemrograman : Pascal, C++, Java,C.

Database

: Microsoft Access, Mysql.

Design

: Photoshop.

Pengalaman Organisasi

[2009 – 2010] Bintalis SMA Negeri 4 Medan

[2012 – 2013] Anggota Keputrian UKMI AL-KHUWARIZMI

[2014 –2015] Ketua Keputrian UKMI Al-Khuwarizmi

(31)

B-2

Pengalaman Kepanitiaan

(32)

LAMPIRAN B : CURRICULUM VITAE

Nama

: Nurul Putri Yanti

Alamat Sekarang

: Jln. Karya Rakyat no.58 Medan

Alamat Orang Tua

: Jln. Karya Rakyat no.58 Medan

Telp/ Hp

: 085276826672

Email

: 24.hyunsang@gmail.com

Riwayat Pendidikan

2011 – 2015

: S-1 Ilmu Komputer Universitas Sumatera Utara, Medan

2007 – 2010

: SMA Negeri 4 Medan

2004 – 2007

: SMP Negeri 16 Medan

1998 – 2004

: SD Negeri 060836 Medan

1997 – 1998

: TK Bina Nusa Medan

Keahlian

Bahasa

: Indonesia, Inggris

Bahasa Pemrograman : Pascal, C++, Java,C.

Database

: Microsoft Access, Mysql.

Design

: Photoshop.

Pengalaman Organisasi

[2009 – 2010] Bintalis SMA Negeri 4 Medan

[2012 – 2013] Anggota Keputrian UKMI AL-KHUWARIZMI

[2014 –2015] Ketua Keputrian UKMI Al-Khuwarizmi

(33)

B-2

Pengalaman Kepanitiaan

(34)

Daftar Pustata

Ali, M. & Jantan, A. 2008. Image encryption using block-based transformation

algorithm.

International Journal Computer Science

35 (1).

Bashir, Ahmed, dkk. 2011. A new image encryption approach using block based on

shifted algorithm

. IJCSNS

11 (12).

Bruce, S. 1996.

Applied Cryptography by : Protocolos, Algorithms, and Source Code

in C.

John Wiley & Sons, Inc : USA

Dooley, J. 2013.

A Brief History of Cryptology and Cryptographic Algorithms.

Springer : New York.

Fairuzabadi, M. 2010. Implementasi kriptografi klasik menggunakan borland delphi.

Jurnal Dinamika Informatika

. 4 (2).

FIPS Pub-197. 2001. Advanced encryption standard.

NIST

.

Kristoforus, R. & Aditya, S. 2012.Implementasi algoritma rijndael untuk enkripsi dan

dekripsi pada citra digital.

Jurnal SNATI 2012

.

Kushawa, J., dan Roy, B.N. 2010. Secure image data by double encryption.

Internasional Journal of Computer Application

5 (10).

(35)

BAB BBB

ANALBSBS DAN PERANCANGAN

3.1 Analisis Sistem

Analisis sistem terdiri dari fase-fase berbeda yang mendeskripsikan pengembangan

sistem. Dalam tugas akhir ini, ada tiga fase analisis yaitu: analisis masalah, analisis

kebutuhan dan analisis proses. Analisis masalah bertujuan untuk memahami

kelayakan masalah. Analisis kebutuhan dilakukan untuk menjelaskan fungsi-fungsi

yang ditawarkan dan mampu dikerjakan sistem. Sedangkan analisis proses untuk

memodelkan tingkah laku sistem.

3.1.1. Analisis Masalah

Gambar merupakan salah satu bentuk data yang memiliki representasi berupa

kumpulan piksel yang tersusun dalam sebuah matriks 2 dimensi. Penggunaan gambar

sebagai media yang memberikan informasi penting sudah umum untuk digunakan.

Namun, saat ini keamanan dalam pengiriman data rentan dilewati oleh pihak ketiga

yang ingin mengetahui isi dari data tersebut. Masalah utama didalam penelitian ini

adalah bagaimana menerapkan algortima

Advanced Encryption Standard

(AES) untuk

mengamankan file gambar.

Masalah-masalah pada penelitian ini diidentifikasikan dengan menggunakan

diagram

Ishikawa. Diagram

Ishikawa

atau yang sering dikenal dengan

Cause and

Effect Diagram

adalah diagram yang digunakan untuk memahami dan

mengidentifikasi serta menggambarkan beberapa masalah yang terjadi pada sistem

dan akibat yang ditimbulkan oleh masalah.

(36)

Gambar 3.1 Diagram

Ishikawa

Berdasarkan gambar 3.1, masalah utama ditunjukkan oleh segi empat yang paling

kanan (kepala ikan), yaitu kerahasiaan data gambar yang tidak terjaga. Kategori

penyebab masalah tersebut ditunjukkan oleh segi empat lainnya. Penjabaran

penyebab-penyebab masalah dijelaskan oleh garis-garis panah (tulang ikan) yang kecil.

Tulang tersebut menunjuk ke arah tulang dari kategori masalah dan selanjutnya

seluruh tulang dari kategori masalah menunjuk ke arah satu tulang besar. Tulang besar

ini yang menunjukkan masalah utama dari analisis yang telah dilakukan. Penyebab

utama dari masalah tersebut yang menjadi latar belakang penelitian penulis adalah

metode yang digunakan dalam proses perubahan data gambar menjadi data

cipher.

Solusi yang dapat ditawarkan adalah dengan menggunakan algoritma

Advanced

Encryption Standard

(AES) untuk mengamankan file gambar.

3.1.2. Analisis Kebutuhan

(37)

34

3.1.2.1. Kebutuhan Fungsional

Kebutuhan fungsional merupakan pendeskripsian dari aktivitas - aktivitas yang dapat

dilakukan oleh sistem . Dalam sistem yang akan dirancang penulis , kebutuhan

fungsional yang akan disediakan adalah sebagai berikut :

1. Fungsi Browse

User

dapat melakukan proses pemilihan gambar yang akan dilakukan proses

enkripsi dari gambar yang dipilih.

2. Fungsi Generate Key

User

dapat memasukkan panjang kunci yang akan digunakan dalam proses

enkripsi.

3. Fungsi Enkripsi

User

dapat memperoleh gambar yang telah berubah bentuk menjadi gambar

cipher

dari proses enkripsi sehingga informasi gambar dapat dirahasiakan .

4. Fungsi Dekripsi

User

dapat memperoleh kembali gambar asli dari gambar

cipher

dari proses

dekripsi.

3.1.2.2. Kebutuhan Non-Fungsional

Kebutuhan non-fungsional merupakan pendeskripsikan fitur, karakteristik dan batasan

lainnya dalam sistem yang akan dirancang. Terdapat beberapa hal yang menjadi

karakteristik kebutuhan non-fungsional antara lain:

1. Performa

Aplikasi yang akan dibangun dapat menunjukkan hasil dari fungsi kriptografi

yang dilakukan oleh sistem.

2. Mudah dipelajari dan digunakan

(38)

3. Hemat biaya

Aplikasi yang akan dibangun menggunakan teknologi

open source.

4. Dokumentasi

Aplikasi yang akan dibangun memiliki panduan penggunaan.

5. Manajemen kualitas

Aplikasi yang akan dibangun memiliki kualitas yang baik yaitu proses

enkripsi dan dekripsi yang relatif cepat.

6. Kontrol

Aplikasi yang akan dibangun memiliki pesan

warning

jika

user

tidak

memasukkan kunci yang akan digunakan.

3.1.3. Analisis Proses

Pada penelitian ini aplikasi yang akan dibangun menggunakan algoritma

Advanced

Encryption Standard

(AES) untuk melakukan proses enkripsi dan dekripsi gambar.

3.2 Perancangan Sistem

Perancangan sistem dilakukan untuk mendeskripsikan gambaran dari sistem yang

akan dibangun. Sistem akan dirancang dengan menggunakan

Unified Modeling

Language

(UML). UML adalah bahasa yang digunakan untuk memberikan penjelasan

mengenai komponen-komponen untuk membangun sistem dan interaksi antar

komponen sistem. Model UML yang digunakan dalam penelitian ini antara lain adalah

use

case diagram,

activity diagram

serta

sequance diagram.

3.2.1. Use-Case Diagram

(39)

36

Gambar 3.2 Diagram

Use-Case

(40)

Tabel 3.1

Narrative Use-Case

Browse Gambar

Use-case Name

Browse

Gambar

Design Scope

Sistem (

black box

)

Goal Level

User-goal

Stakeholder and

Interest

Actor

dienkripsi.

dapat memilih gambar dari file direktori yang akan

Precondition

Actor

menginputkan panjang kunci.

Minimal Guarantee

Sistem akan memberikan pesan

error

ketika

browse

gambar

gagal.

Success Guarantee

Sistem akan menampilkan gambar yang dipilih di panel aplikasi

yang telah disediakan.

Trigger

Actor

menekan tombol

browse

.

Main Success Scenario

1.

Actor

menginputkan panjang kunci yang akan digunakan pada

prose enkripsi gambar.

2.

Actor

menekan tombol browse.

3. Sistem akan menampilkan direktori

file

.

4.

Actor

memilih direktori dan gambar yang terdapat di dalam

direktori

file

.

5. Sistem akan menampilkan gambar yang dipilih.

Tabel 3.2

Narrative Use-Case Input Key

Use-case Name

Input Key

Design Scope

Sistem (

black box

)

Goal Level

User-goal

Stakeholder and

Interest

Actor

dapat memasukkan panjang kunci.

Precondition

-Minimal Guarantee

Sistem akan menampilkan

message dialog

ketika kunci yang

dimasukkan tidak sesuai dengan ketentuan .

Success Guarantee

Sistem akan mengizinkan

actor

melakukan proses

browse

gambar.

Trigger

Pengguna mengetikkan panjang kunci yang akan digunakan.

Main Succes Scenario

1.

Actor

memasukkan panjang kunci yang akan digunakan.

(41)

38

Tabel 3.3

Narrative Use-Case

Enkripsi Gambar

Use-case Name

Enkripsi Gambar

Design Scope

Sistem (

black box

)

Goal Level

User-goal

Stakeholder and

Interest

Actor

dipilih.

dapat melakukan proses enkripsi pada gambar yang

Precondition

Actor

memasukkan panjang kunci dan memilih gambar yang

akan dienkripsi.

Minimal Guarantee

Sistem akan memberikan pesan

error

pada

console

program

ketika gambar tidak bisa dienkripsi.

Success Guarantee

Sistem akan menampilkan gambar

cipher

ke panel yang

tersedia di aplikasi.

Trigger

Actor

menekan tombol enkripsi.

Main Succes Scenario

1.

Actor

menekan button enkripsi.

2. Gambar hasil enkripsi (gambar

cipher

) akan tampil di panel

Tabel 3.4

Narrative Use-Case

Dekripsi Gambar

Use-case Name

Dekripsi Gambar

Design Scope

Sistem (

black box

)

Goal Level

User-goal

Stakeholder and

Interest

Actor

dapat melakukan proses dekripsi pada gambar

cipher.

Precondition

Actor

memasukkan panjang kunci , memilih gambar yang akan

dienkripsi dan gambar telah berubah menjadi gambar

cipher

.

Minimal Guarantee

Sistem akan memberikan pesan

error

pada

console

program

ketika gambar tidak bisa dienkripsi.

Success Guarantee

Sistem akan menampilkan gambar hasil dekripsi ke panel yang

tersedia di aplikasi.

Trigger

Actor

menekan tombol dekripsi

Main Succes Scenario

1.

Actor

menekan button dekripsi.

2. Gambar hasil dekripsi akan tampil di panel.

3.2.2. Sequence Diagram

(42)

Gambar 3.3 Diagram

Sequence

untuk Enkripsi

(43)

40

3.2.3. Activity Diagram

Activity Diagram

menggambarkan alur aktivitas yang ada di dalam sistem yang

bertujuan untuk membantu memahami proses dan menggambarkan setiap interaksi

yang ada antara beberapa

use case

yang digunakan. Activity Diagram dari sistem

dapat dilihat pada gambar 3.5 .

(44)

3.3. Flowchart Sistem

Flowchart

merupakan diagram alir dari bagan-bagan tertentu yang memiliki arus

penggambaran mengenai langkah-langkah penyelesaian suatu permasalahan. Selain

itu,

flowchart

juga memiliki fungsi memudahkan proses pengecekan terhadap sistem

yang akan dibuat. Berikut merupakan

flowchart

dari sistem yang dibangun. Gambar

3.6 dan 3.7 dibawah ini menampilkan

flowchart

dari sistem .

(45)

42

(46)

3.3.1. Flowchart Enkripsi Gambar dengan Algoritma AES

(47)

44

3.3.2. Flowchart Dekripsi Gambar dengan Algoritma AES

Gambar 3.9

Flowchart Dekripsi Gambar

3.4.

Pseudocode

Sistem

(48)

3.4.1. Psuedocode Enkripsi Gambar

Berikut ini adalah

pseudocode

algoritma

Advanced Encryption Standard

(AES)

dalam proses enkripsi gambar.

aesEncryption(gambar , byte key[]) Var

byte imagePix[] = getRGB.gambar(x,y) byte state [] = imagePix[]

int round = key.length() Byte keyEx [] = key.setEx() begin

AddroundKey(state[], keyEx[0]) For round = 1 to (round -1)

SubBytes(state) ShiftRows(state) MixColumns(state)

AddroundKey(state, keyEx[round]) end

SubBytes(state) ShiftRows(state)

AddroundKey(state, keyEx[round]) cipherImage=state

end

3.4.2. Psuedocode Dekripsi Gambar

Berikut ini adalah

pseudocode

algoritma

Advanced Encryption Standard

(AES) dalam

proses dekripsi gambar

cipher.

aesDecryption(cipherImage , byte key[]) Var

byte imagePix[] = getRGB.cipherImage(x,y) byte state [] = imagePix[]

begin

AddroundKey(state[], keyEx[round]) InvShiftRow(state)

InvSubByte (state)

For round = (round -1) to 1

AddroundKey(state, keyEx[round]) InvMixColumns(state)

InvShiftRows(state) InvSubBytes(state) end

(49)

46

1

decryptImage=state end

3.5. Perancangan Antarmuka

Perancangan antarmuka

adalah desain awal dari tampilan sistem yang akan

dibangun. Antarmuka harus dirancang dengan memperhatikan faktor pengguna

sehingga sistem yang dibangun dapat memberikan kenyamanan dan kemudahan untuk

digunakan oleh pengguna. Sistem yang dibangun terdiri dari

form home

, program dan

help.

3.5.1

Form Home

Form

Utama adalah tampilan awal dari sistem ini dijalankan. Gambar 3.10

menunjukkan tampilan sementara dari

form home.

Gambar 3.10 Rancangan Tampilan

Form Home

1

1

1

2

3

(50)

3.5.2 Form

Program

Pada halaman

form

program ini, pengguna dapat melakukan proses

browse

gambar,

enkripsi gambar dan dekripsi gambar . Gambar 3.11 menunjukkan tampilan sementara

dari

form

program.

Gambar 3.11 Rancangan

Form

Program

Keterangan:

1) Pengguna dapat menginputkan panjang kunci yang akan digunakan.

2) Pengguna dapat memilih gambar yang akan dienkripsi dengan menekan

button

browse

pada

form

3) Jika pengguna lupa atau salah menginputkan panjang kunci, maka ketika

pengguna menekan tombol

browse

maka sistem akan menampilkan pesan

peringatan di layar

form.

4) Setelah pengguna memilih gambar yang akan dienkripsi , maka gambar akan

muncul di panel

image

seperti yang tertera di gambar 3.11.

4

5

6

1

(51)

48

5) Proses selanjutnya pengguna menekan tombol

encrypt

untuk melakukan proses

enkripsi pada gambar, lalu hasil enkripsi akan muncul pada panel

image cipher

seperti yang tertera di gambar 3.11 diatas.

6) Lalu , dengan menekan tombol

decrypt

maka sistem akan melakukan proses

dekripsi pada

image cipher

dan akan menghasilkan

decrypt image

. Gambar

tersebut akan ditampilkan pada panel

image decrypt

seperti yang tertera pada

gambar 3.11.

3.5.3

Form Help

Form Help

adalah halaman yang berisikan panduan dalam menggunakan aplikasi

yang telah dirancang oleh penulis. Gambar 3.12 akan menampilkan rancangan

sementara dari

form help.

Gambar 3.12 Rancangan

Form

Penerima

Berikut ini adalah keterangan komponen yang akan digunakan pada

perancangan sistem pada gambar 3.10 , 3.11, dan 3.12 yang ditampilkan pada tabel

3.5.

1

7

(52)

Tabel 3.5 Keterangan Komponen Sistem

Nomor Komponen

Jenis Komponen

Manfaat Komponen

1

JMenu

Membentuk menu yang

disediakan dalam sistem

2

JLabel

Menampilkan

icon

logo gambar

Fakultas Ilmu Komputer dan

Teknologi Informasi

3

JLabel

Menampilkan judul sistem

4

JButton

Membentuk tombol yang

berfungsi untuk menjalankan

perintah

5

JScrollPane

Menampilkan gambar asli,

gambar enkripsi dan gambar

dekripsi

6

JTextField

Mengambil nilai inputan panjang

kunci yang digunakan

7

JLabel

Menampilkan keterangan dari

(53)

BAB BV

BMPLEMENTASB DAN PENGUJBAN

4.1. Bmplementasi

Dalam tugas akhir ini, program dibangun menggunakan bahasa pemrograman Java di

dalam IDE Netbeans versi 8.1. Program ini terdiri dari 3

form

utama, yaitu

form home

yang akan menampilkan judul program tugas akhir penulis ,

form

program yang akan

menjadi media proses enkripsi dan dekripsi gambar, dan

form help

yang akan

menampilkan prosedur penggunaan aplikasi yang dibangun oleh penulis.

4.1.1 Form Home

(54)

Gambar 4.1 Tampilan

Form Home

4.1.2 Form Program

(55)

52

Gambar 4.2

Message warning

pada

form

program

Setelah

user

menginputkan panjang kunci, maka

user

dapat memilih gambar

yang akan dienkripsi dengan menekan tombol

browse

yang terletak disebelah paling

kiri

form.

Setelah gambar dipilih, maka gambar tersebut akan tampil di panel

normal

image.

Setelah itu, untuk melihat gambar yang dienkripsi maka

user

harus menekan

tombol

decrypt .

Dan proses yang terakhir adalah dekripsi. Hasil dekripsi akan terlihat

di

form

jika

user

menekan tombol

decrypt. Jika proses benar, maka tampilan dari

decrypt image

akan sama dengan

normal image. Gambar 4.3 dibawah ini

menunjukkan tampilan dari proses enkripsi dan dekripsi pada

form

program.

(56)

4.1.3 Form Help

Form help

merupakan

form

yang menampilkan prosedur penggunaan aplikasi yang

dirancang oleh penulis. Gambar 4.4 menunjukkan tampilan

form help.

(57)

54

4.2 Pengujian

Pengujian dilakukan terhadap algoritma

Advanced Encryption Standard

(AES) untuk

mengukur keberhasilan sistem dalam melakukan proses enkripsi dan dekripsi serta

waktu yang diperlukan dalam proses enkripsi dan dekripsi tersebut. Pengujian

dilakukan dengan kriteria yang sesuai dengan batasan masalah di atas yaitu :

1. Panjang kunci yang digunakan adalah 128, 192 dan 256 bit.

2. Format gambar yang digunakan adalah .*jpg dengan ukuran 3x4 , 4x5, dan 5x6.

3. Karakter kunci dibangkitkan dari fungsi pembangkit bilangan acak

Pseudorandom Number Generator.

4.2.1. Enkripsi AES

Misalkan nilai piksel gambar dari

state

ke-1 yang telah diubah ke

byte

adalah sebagai

berikut :

32

88

31

E0

43

5A 31

37

F6 30

98

07

A8 8D A2 34

Dan panjang kunci yang digunakan adalah 128 bit, dengan nilainya adalah

sebagai berikut :

2B 28

AB 09

7E AE F7 CF

15

D2 15

4F

16

A6 88

3C

4.2.1.1. Ekspansi Kunci AES

(58)

1. Setiap kolom dari kunci dibentuk menjadi sebuah

word.

w0

= 2B7E1516 ,

w1

= 28AED2A6 ,

w2

= ABF71588 ,

w3

=

09CF4F3C

2. Untuk memperoleh w4

dilakukan proses rotWord(), subWord() dan Rcon[i]

pada

wn-1

yaitu

w3.

a) rotWord()

rotWord(

09CF4F3C) = CF4F3C09

b) subWord()

subWord(CF4F3C09) = 8A84EB01

c) Rcon[i/Nk]

Rcon[i/Nk] = 01000000

d) 8A84EB01 XOR Rcon[i/Nk] = 8A84EB01 XOR 01000000 =

8B84EB01

e)

w4

= w0

XOR 8B84EB01 =

A0FAFE17

2B7E1516 = 00101011 01111110 00010101 00010110

8B84EB01 = 10001011 10000100 11101011 00000001

A0FAFE17

= 10100000 11111010 11111110 00010111

3. Untuk membentuk kunci ronde 0, diperlukan

w4, w5, w6, w7. Tahapan yang

dilakukan untuk memperoleh

w5, w6, w7

sama dengan

w4.

Kunci pada ronde 1 yang diperoleh adalah sebagai berikut :

A0 88

23

2A

FA 54

A3 6C

FE 2C 39

76

17

B1 39

05

Kunci yang diatas akan digunakan untuk proses enkripsi pada ronde ke-1.

4.2.1.2. AddRoundKey

Proses yang dilakukan pada tahap ini adalah melakukan proses XOR antara

state

dengan

kunci ronde.

3243F6A8 = 00110010 01000011 11110110 10101000

2B7E1516 = 00101011 01111110 00010101 00010110

(59)

56

51308D31 = 01010001 00110000 10001101 00110001

28AED2A6 = 00101000 10101110 11010010 10100110

193DE3BE

= 01111001 10011110 01011111 10010111

313198A2 = 00110001 00110001 10011000 10100010

ABF71588 = 10101011 11110111 00010101 10001000

9AC68C2A

= 10011010 11000110 10001101 00101010

E0370737 = 1110000 00110111 00000111 00110111

09CF473C = 00001001 11001111 01000111 00111100

E9F84808

= 11101001 11111000 01000000 00001011

4.2.1.3. SubBytes

Proses ini bertujuan untuk menukar

setiap

byte

pada

state

dengan

byte

pada tabel

S-Box

seperti yang ditampilkan pada tabel 2.5 dengan indeks

byte

kiri menunjukkan baris dan

byte

kanan menunjukkan kolom

.

4.2.1.4. ShiftRow

(60)

4.2.1.5. MixColumns

Pada proses ini kolom dianggap sebagai polonomial pada GF (2

8

). Proses

mix colomns

dapat dilihat pada proses di bawah ini.

02 x D4 = (00000010) x (11010100)

=

x ( x

7

+ x

6

+ x

4

+ x

2

)

=

x

8

+ x

7

+ x

5

+ x

3

= ( x

4

+ x

3

+ x+ 1 ) + x

7

+ x

5

+ x

3

= x

7

+ x

5

+ x

4

+ x+ 1 =

10110011

01 x D4 = (00000001) x (11010100)

=

1 ( x

7

+ x

6

+ x

4

+ x

2

)

=

x

7

+ x

6

+ x

4

+ x

2

=

11010100

03 x BF = (00000011) x (10111111)

=

x+1 ( x

7

+ x

5

+ x

4

+ x

3

+ x

2

+ x + 1)

=

x

8

+x

6

+ x

5

+ x

4

+ x

3

+ x

2

+ x + ( x

7

+ x

5

+ x

4

+ x

3

+ x

2

+ x + 1)

= ( x

4

+ x

3

+ x+ 1 ) +x

6

+ x

5

+ x

4

+ x

3

x

2

+ x+ ( x

7

+ x

5

+ x

4

+ x

3

+ x

2

+ x +

02 x BF = (00000010) x (10111111)

=

x ( x

7

+ x

5

+ x

4

+ x

3

+ x

2

+ x + 1)

=

x

8

+x

6

+ x

5

+ x

4

+ x

3

+ x

2

+ x

= ( x

4

+ x

3

+ x+ 1 ) +x

6

+ x

5

+ x

4

+ x

3

x

2

+ x

(61)

58

1)

= x

7

+ x

6

+ x

4

+ x

3

+ x=

11011010

01 x 5D = (00000001) x (01011101)

= 1

( x

6

+ x

4

+ x

3

+ x

2

+1 )

=

x

6

+ x

4

+ x

3

+ x

2

+1 =

01011101

03 x 5D = (00000011) x (01011101)

= x + 1

( x

6

+ x

4

+ x

3

+ x

2

+1 )

=

x

7

+ x

5

+ x

4

+ x

3

+x + x

6

+ x

4

+ x

3

+

x

2

+1

= x

7

+ x

6

+ x

5

+ x

2

+x +1 =

11100111

01 x 30 = (00000001) x (00110000)

=

1 ( x

5

+ x

4

)

=

x

5

+ x

4

=

00110000

01 x 30 = (00000001) x (00110000)

=

1 ( x

5

+ x

4

)

=

x

5

+ x

4

=

00110000

b0

= (02 x D4)

(03 x BF)

(01 x 5D)

(01 x 30)

=

10110011 11011010

01011101

00110000

= 00000100 = 04

b1

= (01 x D4) (02 x BF)

(03 x 5D)

(01 x 30)

=

11010100

01100101 11100111

00110000

= 01100110 = 66

01 x D4 = (00000001) x (11010100)

=

1( x

7

+ x

6

+ x

4

+ x

2

)

=

x

7

+ x

6

+ x

4

+ x

2

=

11010100

= ( x

4

+ x

3

+ x+ 1 ) + x

7

+ x

5

+ x

3

= x

7

+ x

5

+ x

4

+ x+ 1 =

10110011

03 x D4 = (00000011) x (11010100)

=

x+1 ( x

7

+ x

6

+ x

4

+ x

2

)

=

x

8

+ x

7

+ x

5

+ x

3

+ x

7

+ x

6

+ x

4

+ x

2

= ( x

4

+ x

3

+ x+ 1 ) +x

7

+ x

5

+ x

3

+ x

7

+ x

6

+ x

4

+ x

2

= x

6

+ x

5

+ x

2

+ x+ 1 =

01100111

01 x BF = (00000001) x (10111111)

=

1 ( x

7

+ x

5

+ x

4

+ x

3

+ x

2

+ x + 1)

=

x

7

+ x

5

+ x

4

+ x

3

+ x

2

+ x + 1

=

10111111

01 x BF = (00000001) x (10111111)

=

1 ( x

7

+ x

5

+ x

4

+ x

3

+ x

2

+ x + 1)

=

x

7

+ x

5

+ x

4

+ x

3

+ x

2

+ x + 1

=

10111111

02 x 5D = (00000010) x (01011101)

=

x ( x

6

+ x

4

+ x

3

+ x

2

+1 )

=

x

7

+ x

5

+ x

4

+ x

3

+x =

10111010

01 x 5D = (00000001) x (01011101)

= 1

( x

6

+ x

4

+ x

3

+ x

2

+1 )

=

x

6

+ x

4

+ x

3

+ x

2

+1 =

01011101

03 x 30 = (00000001) x (00110000)

=

x+1 ( x

5

+ x

4

)

=

x

6

+ x

5

+ x

5

+ x

4

= x

6

+ x

4

=

01010000

02 x 30 = (00000010) x (00110000)

=

x ( x

5

+ x

4

)

=

x

6

+ x

5

=

01100000

b

2

= (01 x D4)

(01 x BF)

(02 x 5D)

(03 x 30)

(62)

Demikian proses tersebut dilanjutkan sehingga diperoleh proses enkripsi

seperti tabel 4.1 dibawah ini.

Tabel 4.1 Proses Enkripsi

Round Mulai Round SesudahSubBytes SesudahShiftRow SesudahMixColomns Hasilperputaran kunci

AddroundKey / sesudah Xor dengan kunci

0 32 88 31 E043 51 31 37 F6 30 98 07 A8 8D A2 34

2B 28 31 E0 7E AE F7 CF 15 D2 15 47 16 A6 88 3C

19 A0 9A E9 3D F4 C6 F8 E3 E2 8D 48 BE 2B 2A 08

1 19 A0 9A E93D F4 C6 F8 E3 E2 8D 48 BE 2B 2A 08

D4 E0 B8 1E 27 BF B4 41 11 98 5D 52 AE F1 E5 30

D4 E0 B8 1E BF B4 41 27 5D 52 11 98 30 AE F1 E5

04 E0 48 28 66 CB F8 06 81 19 D3 26 E5 9A 7

Gambar

Gambar 3.2 Diagram Use-Case
Tabel 3.2 Narrative Use-Case Input Key Use-case Name Input Key
Tabel 3.3 Narrative Use-Case Enkripsi Gambar Use-case Name Enkripsi Gambar
Gambar 3.4 Diagram Sequence untuk Dekripsi
+7

Referensi

Dokumen terkait

Pendapatan dan Beban Operasional selain Penyaluran Dana. 1 Pendapatan Operasional Lainnya

Seluruh adik – adik FISIKA USU stambuk 2014, 2015 dan 2016 dan juga Seluruh teman – teman di Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, Medan

Dengan peralatan yang masih sederhana dan kapasitas produksi yang masih rendah, serta mengandalkan jumlah tenaga kerja manusia, pembuatan kerupuk ikan memerlukan waktu yang lebih

Dari hasil observasi dan evaluasi bahwa pelaksaaan model pembelajaran kooperatif type jigsaw sudah baik dan membuat siswa aktif namun pada proses

KAJIAN REDUPLIKASI MORFEMIS BAHASA INDONESIA BERANCANGAN BENTUK DASAR DAN MODEL PROSES SEBAGAI ALTERNATIF PENYUSUNAN SUBBAHAN AJAR.. MORFOLOGI

 išanalizuoti užimtumo didinimo programoje išskirtų tikslinių grupių integracijos į darbo rinką galimybes (prioritetą teikiant jaunimo ir pagyvenusių asmenų

Apibendrinant galima teigti, kad dviem iš dešimties apklaustų jaunų ilgalaikių bedarbių trūksta pasitikėjimo savimi, motyvacijos ieškotis darbo, nes juos tenkina esama

Payment gateway adalah salah satu cara untuk memproses transaksi elektronik. Payment gateway menyediakan alat – alat untuk memproses pembayaran antara