KRIPTOGRAFI
Disusun Oleh:
Mamnuah (06111540000001)
DEPARTEMEN MATEMATIKA
FAKULTAS KOMPUTASI DAN SAINS DATA
INSTITUT TEKNOLOGI SEPULUH NOPEMBER
Tahun 2018
BAB I
DESKRIPSI TUGAS
Pada proses enchipering akan dilakukan proses pemutaran sebanyak 16 kali, oleh karena
itu dibutuhkan 16 buah kunci. 16 buah kunci tersebut dibangkitkan dari kunci eksternal.
Masukan kunci (input key) K dispesifikasikan sebagai 64-bit kunci (key), kunci eksternal ini
akan menjadi masukan untuk permutasi dengan menggunakan matriks permutasi choice one
(PC-1) berikut ini:
8 buah bit yaitu bit 8, 16, 24, 32, 40, 48, 56, dan 64 digunakan sebagai parity bit. Parity
bit tersebut akan mereduksi ukuran efektif key dari 64-bit menjadi 56-bit. Selanjutnya, 56 bit
yang tersisa ini dibagi menjadi dua bagian, yaitu bagian kiri (C0) dan bagian kanan (D0).
Selanjutnya kedua bagian digeser ke kiri (left shifting) sepanjang satu atau dua bit sesuai tabel
pergeseran berikut ini :
Berikut ini merupakan skema yang menjelaskan proses pembangkitan kunci-kunci internal
DES :
C. Enciphering
Seperti sudah dijelaskan sebelumnya, setiap blok plaintext mengalami 16 kali
putaran enchipering. Secara matematis, satu putaran DES dinyatakan sebagai berikut :
Selanjutnya hasil ekspansi yaitu E(Ri-1), yang panjangnya 48-bit di XOR kan dengan Ki
yang panjangnya juga 48-bit dan menghasilkan vektor A yang panjangnya 48-bit.
Vektor A kemudia dikelompokkan menjadi 8 kelompok yang masing-masing
panjangnya 6 bit dan menjadi masukkan bagi proses substitusi. Proses substitusi dilakukan
dengan menggunakan 8 buah kotak-s (s-box). Setiap kotak-s menerima 6 bit masukkan dan
menghasilkan keluaran 4 bit. Kelompok 6 bit pertama akan menggunakan s1, 6 bit selanjutnya
akan menggunakan s2, dan seterusnya. Bit awal dan akhir menentukan baris dan 4 bit ditengah
akan menentukan kolom yang akan dipilih.
Kedelapan kotak S (s-box) adalah :
Contoh pencarian output dari kotak s adalah :
Bit 100110 = keluaran dari kotak-s adalah kotak-s pertama, baris ke 2 dan kolom ke3 yaitu 8
(1000).
Keluaran proses substitusi adalah vector B yang panjangnya 48 bit. Vector B menjadi
masukan untuk proses permutasi. Adapun tujuan dari proses permutasi adalah untuk mengacak
hasil proses substitusi kotak-S. Hasil permutasi dinyatakan dalam fungsi f(Ri-1,Ki). Permutasi
ini dilakukan dengan menggunakan matriks permutasi sebagai berikut :
DEKRIPSI DES
DES memiliki proses yang sama untuk algoritma enkripsi dan dekripisinya. Proses
pendekripsian juga dilakukan dengan menggunakan cipher Feistel sebanyak 16 round, dengan
pada masing-masing round mengerjakan proses yang sama. Yang membedakan hanya urutan
kunci dan juga input masukannya yang berupa ciphertext.
Pada round pertama, yang digunakan adalah K16, round kedua menggunakan K15, dan
seterusnya hingga round terakhir akan menggunakan K1. Ciphertext yang digunakan yaitu
berupa L16R16 yang diperoleh dari hasil permutasi invers IP-1 terhadap ciphertext sebenarnya
(y) kemudian menukar 32 bit pertama dengan 32 bit terakhir dari hasil tersebut.
Proses dekripsi dilakukan dengan cara berkebalikan dari proses enkripsi, yaitu
dengan menggunakan L16 R16 untuk menemukan L0 R0 atau plaintext.
Atau dapat ditunjukkan dengan gambar berikut untuk proses setiap round-nya.
BAB VI
“ PEMBAHASAN DAN SIMULASI “
public ETSKRIPTO() {
}
}
return m;
}
setBitInArray(output, 8 * i + j, value);
}
}
return output;
}
}
public static String simpan(String enkrip, String dekrip) {
String teks = enkrip;
String tt = dekrip;
String path = "hasilrunningETS.txt";
try {
FileWriter fw = new FileWriter(path);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("hasil enkripsi");
bw.write("\n"+teks);
bw.write("\n hasil dekripsi");
bw.write("\n"+tt);
bw.close();
} catch (Exception e) {
}
return "";
}
java.util.logging.Logger.getLogger(GUI_ETS_KRIPTO.class.getName()).log(java.util.logging.Level.SEVE
RE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(GUI_ETS_KRIPTO.class.getName()).log(java.util.logging.Level.SEVE
RE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(GUI_ETS_KRIPTO.class.getName()).log(java.util.logging.Level.SEVE
RE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(GUI_ETS_KRIPTO.class.getName()).log(java.util.logging.Level.SEVE
RE, null, ex);
}
//</editor-fold>
Output yang dihasilkan berupa hasil bilangan biner yang sudah di XOR kan,dimana kunci yang
diberikan sudah ditentukan yaitu hanya dibatasi sampai 15 s/d 16 karakter dan plainteksnya
hanya bisa dibatasi minimal 16 karakter .Kekurangan dari algoritma ini adalah cipherteks yang
dihasilkan tidak dalam bentuk karakter sehingga masih perlu dikonversi menggunakan tabel
ASCII dan juga dalam penyimpanan hasil enkripsi masih ada kekurangan berupa tidak
tersimpannya(hilang) hasil running sebelumnya jika kita menyimpan hasil runingg yang baru.