BIODATA MAHASISWA
A. DATA MAHASISWA
1. Nama Lengkap : Syabrul Majid
2. Tempat dan Tanggal Lahir : Batang Hari, 26 Maret 1992
3. Agama : Islam
4. Jenis Kelamin : Laki-laki
5. NIM : 131421058
6. E-mail : majidadnese@gmail.com
7. Golongan Darah : O
8. Anak ke : 2 (dua) dari 4 (Empat) bersaudara 9. Departemen/Program Studi : S1 Ilmu Komputer
10.Alamat Rumah : Jl. Dr.Mansyur No 70 Medan 11.No. Telepon Rumah/HP : 085362050610
12.Asal SMA/SMK/MA : SMA Negeri 1 Danau Kembar 13.Tahun Lulus SMA/SMK/MA : 2010
14.Kodya/Kabupaten : Solok, Sumatera Barat
15.Alamat Sekolah : Jl. Panorama danau Kembar, Solok
16.Nilai NEM** : 48,00
3. Tempat dan Tanggal Lahir
- Ayah : Syahril, 07 September 1964
7. Jumlah Tanggungan Orangtua : 4 (Empat) Orang
8. Alamat Kantor : -
9. Alamat Rumah Orangtua : Jl. Batang Hari, Kecamatan Lembah Gumanti, Alahan Panjang, Kabupaten Solok, Sumatera Barat
10. No. Telepon/HP : 087868606468
Medan, 06 Januari 2016 Hormat Saya,
LISTING PROGRAM
FEALCtr::encrypt($pt, $pw, 256) ;
$decr = empty($_POST['decr']) ? $plain :
$chippertextkey = empty($_POST['enkey']) ?
$cipherkey : $enkripsi->_enkripsi($plainkey) ;
$plaintextkey = empty($_POST['dekey']) ? $pw :
$enkripsi->_dekripsi($cipherkey) ;
if(!isset($_SESSION['username'])) { header('location:login.php'); }
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8
<!--[if gt IE 8]><!-->
<html class="no-js"> <!--<![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL DALAM PENGAMANAN FILE TEKS</title>
<!-- Bootstrap -->
<link href="css/stylexFeal.css"
rel="stylesheet" /> <!-- canvas -->
</head> <header>
<section class="hero"> <div class="container">
<div class="row nav-wrapper">
<div class="col-md-6 col-sm-6 col-xs-6 text-right
navicon">
<p><a href="logout.php"> <img src="exit.png" width="50px" height="50px" alt="Exit"></a>
<div class="lg-container4">Proccess time : <?= round(microtime(true) - $timer, 3) ?>s</div></p>
<a id="trigger-overlay" class="nav_slide_button nav-toggle" // function to hide and show a navigation menu
var aMenu = document.getElementById(aMenu);
aMenu.style.display = (aMenu.style.display == "block") ? "none" : "block";
if (document.NamaForm.NamaSelection.value ==
"muncul"){document.getElementById('DivTampil').style.disp lay="inline"}
if (document.NamaForm.NamaSelection.value ==
"muncul"){document.getElementById('DivTampil2').style.dis play="none"}
if (document.NamaForm.NamaSelection.value ==
"hilang"){document.getElementById('DivTampil').style.disp lay="none"}
if (document.NamaForm.NamaSelection.value ==
"hilang"){document.getElementById('DivTampil2').style.dis play="inline"}
}
</script>
<div class="lg-container">
<h3><b>File and Text Encryption using FEAL </b></h3> <font color="black">
<table> <tr>
<td>Choose : </td>
<td><form name='NamaForm' method='post' action='#'>
<select style="width:500px" name='NamaSelection'
onchange='DisplayShowHide()'>
<table class="fixed-layout"
style="border-collapse:collapse;">
<form action="file-processor.php" method="post" enctype="multipart/form-data">
<td><select style="width:572px" name="aksi"> <option value="enc">Enkrypt</option> <option value="dec">Dekrypt</option> </select></br></td>
<tr><td><input type="text" name="pw" style="width:567px" size="62" placeholder="key">
<tr><td><input type="image" src="logo.png" width="50px" height="50px" alt="Submit button"></td>
</form>
<table class="fixed-layout"
style="border-collapse:collapse;"> <tr>
<td width="60"><span
style="width:70px">Plaintext:</span></td>
<td width="50"><textarea type="text" name="pt" style="width:500px"><? echo stripslashes($pt); ?></textarea></td>
</tr> <tr>
<td width="69">Key:</td>
<td><input type="text" name="pw" style="width:500px" value="<?= $pw ?>">
</div> </tr>
</table>
<table class="fixed-layout"
style="border-collapse:collapse;">
</td><tr><br>
<td width="69">Mode
<td><select name="Mode">
<option value="">Block CHiper</option> </select>
</td></table>
<td><button type="submit" name="encr"
style="width:70px" value="Encrypt
it">Encrypt</button></td>
<td><input type="text" name="cipher" style="width:500px" value="<?= $encr ?>"></td></br>
</tr>
<tr><td><button type="submit" name="decr"
style="width:70px" value="Decrypt
it">Decrypt</button></td>
<td><textarea name="plain"
style="width:500px" "\t"><? echo stripslashes($decr); ?></textarea>
<input type="text" size="27" value="<?= $_SESSION['p'] ?>"></td>
</tr> <tr>
<td>g</td><td> :
<input type="text" size="27" value="<?= $_SESSION['g'] ?>"></td>
</tr>
<tr>
<td>y</td><td> :
<input type="text" size="27" value="<?= $_SESSION['y'] ?>"></td>
<input type="text" size="27" value="<?= $_SESSION['x'] ?>"></td>
<td>p</td><td> :
<input type="text" size="27" value="<?= $_SESSION['p'] ?>"></td>
</tr> </table> <table>
<b>Bilangan Acak Pengirim (k)</b>
<tr>
<td>k</td><td> :
<input type="text" size="27" value="<?= $_SESSION['k'] ?>"></td>
</tr> </table> <tr>
<td><input type='button'
style="width:227px" value='Bangkitkan Kunci'
onclick="javascript:location.href='key.php';"></td> name="plainkey" style="width:219px" placeholder="type key here"><?= $pw ?></td>
type="submit" name="enkey" value="Encrypt it">Encrypt</button></td>
<table> name="pw" size="20" value="<?= $plaintextkey ?>"></td>
</tr>
<link href="css/stylecov.css" rel="stylesheet" /> <link href="css/animate.css" rel="stylesheet"> <table>
<body bgcolor="#284666"> <div class="lg-container">
<h3 align="center" class="animated
fadeInDown">IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID <BR>ALGORITMA FEAL DAN ALGORITMA ELGAMAL <br> DALAM PENGAMANAN FILE TEKS </h3>
<h3 align="center" class="animated fadeInDown"> <br> SKRIPSI</h3>
<h3 align="center" class="animated fadeInDown"> <br> Syabrul Majid <br> 131421058</br> <br> <img position="center" src="img/Logo Fasilkom-TI.png" class="single_image"> </br> </h3>
<h3 align="center" class="animated
fadeInDown">FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI <br> PROGRAM STUDI SARJANA ILMU KOMPUTER</br> UNIVERSITAS SUMATERA UTARA </br> MEDAN</br>2015</br></h3>
</div>
<form action="proseslogin.php" method="post">
<center><input name="username" align="center" type="text" placeholder="username"><br>
<input name="password" align="center" type="password" placeholder="password">
<br><input type="submit" value="Login" /> </center>
$cekuser = mysql_query("SELECT * FROM user WHERE username = '$username'");
$cekpass = mysql_query("SELECT * FROM user WHERE username = '$pass'");
$jumlah = mysql_num_rows($cekuser); $hasil = mysql_fetch_array($cekpass); if($jumlah == 0)
{
echo 'Username Belum Terdaftar!'; echo '<a href="login.php">Back</a>'; }
else {
echo "<script
private static function subBytes($s, $Nb) {
private static function shiftRows($s, $Nb) {
private static function mixColumns($s, $Nb) {
$Nb = 4;
private static function subWord($w) {
0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16);
Norctr.class.php
<?php
Class FEALCtr extends FEAL {
public static function encrypt($plaintext, $password, $nBits) ord(substr($password, $i, 1)) & 0xff;
$key = FEAL::cipher($pwBytes, self::urs($nonceMs, $i * 8) & 0xff;
for ($i = 0; $i < 2; $i++) $counterBlock[$i + 2] = self::urs($nonceRnd, $i * 8) & 0xff;
for ($i = 0; $i < 4; $i++) $counterBlock[$i + 4] = self::urs($nonceSec, $i * 8) & 0xff;
$ctrTxt = '';
for ($i = 0; $i < 8; $i++) $ctrTxt .= chr($counterBlock[$i]);
$keySchedule = FEAL::keyExpansion($key);
$blockCount = ceil(strlen($plaintext) /
$cipherCntr = FEAL::cipher($counterBlock, $keySchedule);
$blockLength = $b < $blockCount - 1 ? $blockSize : (strlen($plaintext) - 1) % $blockSize + 1; $cipherByte = array();
for ($i = 0; $i < $blockLength; $i++) {
$cipherByte[$i] = $cipherCntr[$i] ^
ord(substr($plaintext, $b * $blockSize + $i, 1));
$cipherByte[$i] = chr($cipherByte[$i]);
public static function decrypt($ciphertext,
$password, $nBits) ord(substr($password, $i, 1)) & 0xff;
$nBlocks = ceil((strlen($ciphertext) - 8) / $blockSize);
$ct = array();
for ($b = 0; $b < $nBlocks; $b++) $ct[$b] = substr($ciphertext, 8 + $b * $blockSize, 16);
}
$key = new elgamal(0,0,0,0,0); $key->_key(258);
FEALCtr::encrypt($pt, $pw, 256) ;
$decr = empty($_POST['decr']) ? $plain :
FEALCtr::decrypt($cipher, $pw, 256);
$enkripsi = new
$dekripsi = new
$chippertextkey = empty($_POST['enkey']) ?
$cipherkey : $enkripsi->_enkripsi($pw) ;
$plaintextkey = empty($_POST['dekey']) ? $plainkey
<!--[if gt IE 8]><!-->
<html class="no-js"> <!--<![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID <br> ALGORITMA FEAL DAN ALGORITMA ELGAMAL <br> DALAM PENGAMANAN FILE TEKS</title>
<!-- Bootstrap -->
<link href="css/stylexFeal.css"
rel="stylesheet" /> <!-- canvas -->
</head> <header>
<section class="hero"> <div class="container">
<div class="row nav-wrapper">
<div class="col-md-6 col-sm-6 col-xs-6 text-right
<a id="trigger-overlay" class="nav_slide_button nav-// function to hide and show a navigation menu
function showHide(aMenu) {
var aMenu = document.getElementById(aMenu);
aMenu.style.display = (aMenu.style.display == "block") ? "none" : "block";
if (document.NamaForm.NamaSelection.value ==
"muncul"){document.getElementById('DivTampil').style.disp lay="inline"}
if (document.NamaForm.NamaSelection.value ==
"muncul"){document.getElementById('DivTampil2').style.dis play="none"}
if (document.NamaForm.NamaSelection.value ==
"hilang"){document.getElementById('DivTampil').style.disp lay="none"}
if (document.NamaForm.NamaSelection.value ==
"hilang"){document.getElementById('DivTampil2').style.dis
<td>Choose : </td>
<td><form name='NamaForm' method='post' action='#'>
<select style="width:500px" name='NamaSelection'
</table>
<div id='DivTampil' style='display:none'> <p>
<table class="fixed-layout"
style="border-collapse:collapse;">
<form action="file-processor.php" method="post" enctype="multipart/form-data">
<tr><td><input type="text" name="pw" style="width:770px" size="62" placeholder="key">
<tr><td><input type="image" src="logo.png" width="50px" height="50px" alt="Submit button"></td>
</form>
<table class="fixed-layout"
style="border-collapse:collapse;"> <tr>
<td width="60"><span
style="width:70px">Plaintext:</span></td>
<td width="50"><textarea type="text" name="pt" style="width:500px"><? echo stripslashes($pt); ?></textarea></td>
</tr> <tr>
<td width="69">Key:</td>
<td><input type="text" name="pw" style="width:500px" value="<?= $pw ?>">
<tr>
width='150'>p</td><td>: <input type="text" rows="10" cols="60" value="<?= $_SESSION['p'] ?>"></td>
</tr> <tr>
<td>g</td><td>: <input type="text" rows="10" cols="60" value="<?= $_SESSION['g'] ?>"></td>
</tr> <tr> <tr>
<td>y</td><td>: <input type="text" rows="10" cols="60" value="<?= $_SESSION['y'] ?>"></td> type="text" rows="10" cols="60" value="<?= $_SESSION['x'] ?>"></td>
</tr> <tr>
<td>p</td><td>: <input type="text" rows="10" cols="60" value="<?= $_SESSION['p'] ?>"></td> type="text" rows="10" cols="60" value="<?= $_SESSION['k'] ?>"></td>
</tr> <tr>
<td colspan='2'><input
type='button' value='Bangkitkan Kunci'
onclick="javascript:location.href='key.php';"></td> </tr>
<td width='150' type="text" name="pw" rows="10" cols="60"><? echo stripslashes($pw); ?></td>
</tr>
</tr>
</table>
<td><button
type="submit" name="enkey" value="Encrypt it">Encrypt</button></td>
<td><input type="text" name="cipherkey" size="79" value="<?= $chippertextkey ?>" "/t"></td> name="plainkey" size="79" value="<?= $plaintextkey, $del2 ?>"></td>
<table class="fixed-layout"
style="border-collapse:collapse;">
</td><tr><br>
<td width="69">Mode
<td><select name="Mode">
<option value="">Block CHiper</option> </select>
</td></table>
<table height="164"> <br><tr>
<td><button type="submit" name="encr"
style="width:70px" value="Encrypt
it">Encrypt</button></td>
<td><input type="text" name="cipher" style="width:500px" value="<?= $encr ?>"></td></br>
<tr><td><button type="submit" name="decr"
style="width:70px" value="Decrypt
it">Decrypt</button></td>
<td><textarea name="plain"
style="width:500px" "\t"><? echo stripslashes($decr); ?></textarea>
private function _p($batas){
return $this->_p($batas); }
}
private function _g(){
return rand(1,$this->p - 1); }
private function _x(){
return rand(1,$this->p - 1); }
return rand(1,$this->p - 2); }
public function _rekursifMod($basis,$pangkat,$mod){ if ($pangkat <= 2)
return ((pow($basis,$pangkat)) % $mod); else{
>_rekursifMod($basis,$b1,$mod)) *
($this->_rekursifMod($basis,$b2,$mod))) % $mod); }
}
$chipperText = "";
for ($i=0;$i<(strlen($ascii));$i+=3){ $tmp = substr($ascii,$i,3);
if (strlen($tmp)==1) $tmp = "00".$tmp; if (strlen($tmp)==2) $tmp = "0".$tmp;
$r = $this->_rekursifMod($this->g,$this->k,$this->p);
$s =
((($this->_rekursifMod($this- >y,$this->k,$this->p))*($this->_rekursifMod($tmp,1,$this->p))) % $this->p);
$chipperText .= $r." ".$s." "; }
return $chipperText; }
public function _dekripsi($chipperText){ $t = explode(" ",$chipperText); $ascii = ""; if (strlen($b)==1) $b = "00".$b; if (strlen($b)==2) $b = "0".$b;
$text .= chr($bil);
$targetFile = basename( $_FILES["fName"]["name"]); //option aksi
'r');//membuka file hasil upload
$pt = fread($fh, 2097152); fclose($fh);
$encr = rtrim($_POST["fName"]) ? $cipher : FEALCtr::encrypt($pt, $pw, 256) ;
$success=false;
<header><link href="css/stylepro.css" rel="stylesheet" /> </header>
<body bgcolor="#284666">
<p> <a href="index.php"> <img src="back.png" width="50px" height="50px" alt="Back"></a>
<a href="logout.php"> <img src="exit.png" width="50px" height="50px" alt="Exit"></p></a>
<div class="lg-container">
<h2>Succes Proccess:</h2> <h3><br><i><u><?= $targetFile ?></u></i></h3>
<a download href="<?= $target_dir.$targetFile ?>" style="text-decoration:none">
<center><br><img src="download.png" width="50px" height="50px" alt="Home" >
</br>
<br>Save File</center></br></a> </div>
DAFTAR PUSTAKA
[1] Bofandra. 2009. Implementasi Data Encryption Standart untuk Enkripsi – Dekripsi Berkas PDF. Makalah. Bandung: Institut Teknologi Bandung. [2] Fitri, S. 2009. Implementasi Algoritma Kriptografi ElGamal dan WATERMARK
dengan Metode LSB Pada Citra. Skripsi. Yogyakarta: Sekolah Tinggi manajemen Informatika Dan Komputer.
[3] T, Semuil, Wijaya, M. C. 2009. Pengamanan Data menggunakan Metoda
Enkripsi Simetri dengan Algoritma FEAL. Jurnal. Bandung: Universitas Kristen Maranatha.
[4] Prasetiyo, B. 2013. Kombinasi Steganografi Bit Matching dan Kriptografi
ElGamal untuk Pengamanan Data . Tesis. Semarang: Universitas Diponegoro.
[5] Mollin, R. A. 2002. RSA and PublicKey Cryptography. Florida: Chapman &
Hall/CRC.
[6] Mollin, R. A. 2007. An Introduction to Cryptography. Edisi ke-2. Florida:
Chapman & Hall/CRC.
[7] Mollin, R. A. 2008. Fundamental Number Theory with Applications. Edisi ke-2.
Florida: Chapman & Hall/CRC.
[8] Munir, Rinaldi. 2006. Kriptografi. Bandung: Penerbit Informatika.
[9] Paar, Christof dan Pelzl, Jan. 2010. Understanding Cryptography. Berlin:
Springer-Verlag.
[10] Schneier, Bruce. 1996. Applied Cryptography. Edisi ke-2. New Jersey: John
Wiley & Sons, Inc.
[11] Schneier, Bruce. 1996. Applied Cryptography: Protocols, Algorithms, and
Source Code in C. Edisi ke-2. New Jersey: John Wiley & Sons, Inc. [12] Sudarmono. 2016. Aplikasi Algoritma ElGamal dan Cryptanalis menggunakan
teori Probabilitas Pada Kartu ATM. Skripsi. Skripsi: Universitas Sebelas Maret.
[13] Zaki S. 2011. Program Aplikasi Kemanan Citra Dengan Algoritma ElGamal
[14] Kak, A. 2015. Blok Cipher and Data Encription Standart. Lecture Notes. India:
Purdue University.
[15] Knine, L.L. 2009. A new Variant of FEAL Strem Cipher. Journal: Engineering
And Technology.
[16] Dawson, E. Gustafson, H. Henricksen, M. Millian, B. 2002. Evaluation of FEAL
Stream Cipher. Australia, Queensland University of Technology. [17] Menezes, Oorcshot, and Vanstone, 1996, Handbook of Applied Cryptography,
CRC Press, Inc. USA.
[18] Bilham E, Carmeli Y, 2014, An Improvement of Linear Cryptanalysis with
Addition Operation with Applications To FEAL-8X, Computer Science Department – Israel Institute of Technology, Israel.
[19] Biswas S, Chellappa, 2011, Face Recognition from Still Images dan Video,
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1Analisis Sistem
Analisis merupakan rekayasa perangkat lunak yang menjadi penghubung antara
penglokasian perangkat lunak tingkat sistem dan perancangan perangkat lunak, dalam
hal ini perancangan interface program aplikasi ini untuk proses enkripsi maupun
dekripsi pesan/data, memungkinkan perekayasa sistem menentukan fungsi dan kerja
perangkat lunak, menunjukkan interface perangkat lunak dengan elemen sistem yang
lain, dan membangun batasan yang harus dipenuhi oleh perangkat lunak.
Ketika berbicara tentang program aplikasi tentu tidak terlepas dari komponen
interface dan user. Dalam interface sendiri terdapat berbagai elemen yang membangunnya agar dapat aplikasi tersebut berfungsi. Didalam program aplikasi
terdapat arsitektur, basis data (database), dan desain prosedural yang mendukung
dalam program aplikasi tersebut sampai benar-benar digunakan dengan baik. User
merupakan instruktor dalam aplikasi tersebut sehingga dapat berjalan sesui dengan
tujuan aplikasi tersebut dibuat.
3.2Analisis Masalah
Dalam distribusi data antar pengguna membutuhkan jaminan keamanan dimana data
yang dikirim tidak diganggu seperti dicuri, dihapus dimodifikasi maupun dirusak
sehingga membutuhkan suatu teknik untuk pengamannya. Kriptografi merupakan
salah satu teknik untuk mengamankan data dengan cara mengubah bentuk data
menjadi bentuk yang tidak dapat dikenali sehingga pihak asing hanya dapat
Implementation Algorithm Hybrid FEAL
and ElGamal
Seluruh masalah yang timbul dapat disajikan dalam sebuah diagram Ishikawa seperti
pada gambar 3.1 dibawah ini:
Gambar 3.1 Diagram Ishikawa pada implementasi Algoritma hybrid FEAL dan Elgamal dalam pengamanan Data Teks
3.2.1 Analisis persyaratan (Requirement Analysis)
Analisis persyaratan sebuah sistem dikelompokkan kedalam dua bagian secara garis
besar yaitu:
1. Analisis persyaratan fungsional
Persyaratan fungsional merupakan segala sesuatu yang harus di miliki oleh
sistem agar sistem berjalan sesui dengan fungsinya dan dapat dimaksimalkan.
Enkripsi dan dekripsi dilakukan dengan algoritma hybrid FEAL dan ElGamal
dimana kunci FEAL sebagai kriptografi simetri dijadikan kunci ElGamal yang
diketahui sebagai algoritma asimetris sehingga terbentuknya kriptografi
hybrid. Kunci dibangkitkan dengan pembangkit bilangan prima dengan metode Lehmann (Lehmann Prime Generator).
2. Analisis persyaratan Non-Fungsional
Persyaratan non fungsional adalah persyaratan apa yang harus dilakukan
stakeholder sebuah sistem. Persyaratan non fungsional meliputi performa mudah untuk di pelajari dan di implementasikan, hemat biaya dan waktu
dokumen dan kontrol terhadap sistem tersebut.
a. Sistem dapat diubah antara karakter ke desimal dengan menggunakan tabel
ASCII dan juga sebaliknya dengan benar, sehingga tidak ada perbedaan
hasil dekripsi dengan cara informasi asli.
b. Waktu pengesekusian untuk enkripsi dari FEAL dan menjadi kunci juga
pada ElGamal.
3.3Analisis Proses
3.3.1 Proses sistem dengan use case diagrams
Pemodelan sistem dilakukan bertujuan untuk memodelkan hasil analisis sistem yang
dirancang. Pemodelan hasil analisis sistem yang dirancang menggunakan use case
diagrams.
Use case diagram menggambarkan apa saja aktifitas yang dilakukan oleh suatu sistem dari sudut pandang pengamatan luar. Yang menjadi persoalan itu apa yang
dilakukan dan bagimana melakukannya. Use case diagram lebih dekat kaitannya
dengan kejadian-kejadian. Kejadian (scenario) merupakan contoh apa saja yang
terjadi ketika seseorang berinteraksi dengan sistem.
Berdasarkan analisis kebutuhan sistem beberapa hal yang harus dipenuhi oleh sistem,
yaitu:
1. Sistem harus dapat membangkitkan kunci public dan kunci private yang akan
digunakan dalam proses enkripsi dan dekripsi.
2. Sistem harus dapat melakukan enkripsi data, kemudian sistem juga harus dapat
mendeksripsikan ciphertext kedalam bentuk teks yang bisa dibaca.
3. Sistem harus dapat berinteraksi data atu informasi yang telah disiapkan
kedalam sistem.
Gambar 3.2 Use case Algoritma hybrid FEAL dan ElGamal
Dari use case diatas tampak bahwa penerima membangkitkan kunci public dan
private, kemudian kunci public diberikan kepada siapa saja yang ingin mengirim data atau informasi kepadanya. Sedangkan kunci private hanya diketaui antara pengirim
dan penerima saja dan tidak boleh diketahi oleh orang lain. Setelah pengirim
mendapatkan kunci public, kemudian pengirim melakukan proses enkripsi. Setelah
data di enkripsi maka pengirim dapat mengirimkan dengan aman melaui transfer data.
Dan penerima akan mendekripsikan dengan mengetahui kunci private yang diberiakan
oleh si pengirim. Pada tabel dibawah ini disajikan tabel dokumentasi naratif untuk use
Tabel 3.1 Dokumentasi naratif program enkripsi dan dekripsi Algoritma FEAL dan
ElGamal
Nama use case Program enkripsi
Actor Penerima dan pengirm pesan
Deskripsi Use case mendeskripsikan bagaimana proses yang terjadi anatara suatu proses yang lain dan atara proses pengirim
dan penerima
Pre-condition Data atau informasi yang yang dikirim berupa txt
Typical cuourse of event
Aksi aktor Respons sistem
Langkah ke-1: penerima
menjalankan program
Langkah ke-2: Sistem akan
memuat modul-modul pada
menu utama
Langkah ke-3: Penerima
akan membangkitkan
kunci dari menu utama
Langkah ke-4: sistem
kemudian membangkitkan
kunci public dan private
Langkah ke-5: penrima
akan menyimpan kunci,
kemudian membagikan
kunci public kepada setiap
orang yang ingin
mengirim data dan atau
informasi kepadanya
Langkah ke 6: Pengirim
kemudian menjalankan
program dan melakukan
proses enkripsi dan
memberikan kepada penerima
dengan memberitahukan kunci
private.
Alternative curse
Aksi aktor Respons sistem
Memberikan kunci hybrid
Jika kunci hybrid belum berjalan maka kembali ke
enkripsi semula
Post kondition Data atau informasi yang dikirim si pengirim kepada penerima sampai tanpa dikatehui oleh orang lain
Pada tabel yang disajikan diatas menjelaskan use case program enkripsi dan deksripsi
pre condition, serta action dari pengguna dan sistem yang telah dibuat. Dengan penyajian tabel diatas dapat diketahui bagaimana cara penggunaan program dan
langkah-langkah dalam menggunakan program.
Pada use case dapat di lihat beberapa aksi yang dilakukan oleh aktor, yaitu bangkitkan
kunci, enkripsi dan dekripsi. Untuk menjelaskan kertiga proses dapat digambarkan
dengan diagram activity dari setiap proses. Untuk menjelaskan proses bangkitkan
kunci, maka berikut akan dibuatkan dokumentasi naratif untuk use case bangkitkan
kunci:
Tabel 3.2 Proses pembangkitan Kunci
Nama use case Bangkitkan kunci
Aktor Penerima
Deskripsi use case
Use case mendekripsikan bagaimana penerima menggunakan sistem untuk membangkitkan sebuah kunci private dan public
algoritma FEAL dan ElGamal
Pre-condition Penerima belum memiliki kunci private dan public
Typical course of event
Aksi Aktor Respon sistem
Langkah 1:
penerima
menginputkan
sebuah bilangan
Langkah 2: sistem mencheck apakah
bilangan tersebut prima atau komposit.
Jika prima maka bilangan tersebut akan
di cetak dan jika tidak akan digenerate
sebuah bilangan prima.
Langkah 3:
Penerima
menginputkan
bilangan prima
Langkah 4: sistem akan
membangkitkan sebuah kunci private
dan public.
Langkah 6: kunci akan di simpan di
Alternative course Aksi aktor Respons sistem
- -
Post kondition Kunci telah dibangkitkan dan di simpan di sistem
Merujuk pada tabel diatas dapat dijelaskan bahawa use case membangkitkan
kunci secara detail dimana terdapat aktor, pre-condition, post-condition serta action
dari user dan system. Dengan tabel diatas dapat diketahui apa saja action yang
dilakukan pengguna dan sistem pada suatu pembangkitan kunci pada algoritma FEAL
dan ElGamal.
Pada proses enkripsi dan penyisipan, maka hal pertama yang dilakukan sistem adalah
memerika apakah data atau informasi yang akan disiapkan ada atau tidak, kemudian
sistem juga mengecek kunci public dan kunci private. Pada proses enkripsi, maka
setiap karakter data atu informasi (data .*txt) akan diubah kedalam bentuk desimal
menggunakan kode ASCII. Setelah diubah ke bentuk desimal, maka dilakukan proses
enkripsi dengan menggunakan algoritma ElGamal.
Tabel 3.3 Proses Enkripsi ElGamal
Nama use case Eknkripsi
Aktor Recipient
Dekripsi Use case ini berfungsi untuk melakukan enkripsi dengan algoritma FEAL, kemuadian hasil enkripsi FEAL tersebut
dijadikan kunci untuk algoritma ElGamal
Pre-condition Data dalam bentuk txt
Aksi aktor Respons sistem
Typical course of event
Langkah 1: pengirim melakukan input
-
langkah 4: sistem
akan mencetak
ciphertext
Alternative course Aksi aktor Respons system
- -
Post condition
Data telah di enkripsi, dimana informasi teks dilihat dalam
bentuk ciphertext dan tidak mungki dipahami dalam kata yang
memiliki sebuah makna
Dari tabel diatas dapat dipahami bahwa use case dalam proses enkripsi dimana
terdapat aktor, pre condition, post condition dari user dan system. Dengan
memperhatikan tabel diatas dapat diketahui action yang dilakukan user dan proses
yang terjadi proses enkripsi.
3.3.2 Proses sistem dengan Sequence diagrams
Sequence diagram adalah suatu diagram yang mengambarkan interaksi antara actor
dan sistem pada use case scenario diagram ini sangat membantu melihat pesan hight
level yang masuk dan keluar dari sistem (Bentley, Whitten, 2007).
Garis penuh menunjukkan input yang dilakukan oleh user pada algoritma Hybrid
FEAL dan ElGamal, sedangkan garis yang putus-putus yang mengarah ke bagian user
menunjukkan output yang dihasilkan oleh system. Tiap-tiap inputan yang terjadi
memiliki activation bars yang menunjukkan proses enkripsi dan dekripsi yang
dialakukan oleh users dan system. Pada sequence diagram dapat dijelaskan pada
Gambar 3.3 Proses Enkripsi dan Dekripsi dengan sequence diagram Algoritma Hybrid
FEAL dan ElGamal
3.3.3 Proses sistem dengan Activity diagrams
Activity diagram merupakan suatu diagram yang digunakan untuk menggambarkan aliran proses usaha secara grafis, langkah-langkah dari suatu use-case atau logika dari
suatu tingkah laku objek dan metode dari suatu sistem yang akan dibangun (Bentley,
Whitten, 2007).
Node bulat bewarna hitam ditengah menunjukkan mulai dan proses akhir pesan.
Sistem ini dibagi menjadi dua bagian yang terpisah untuk menunjukkan atau
merupakan aktivity diagram dalam penelitian ini yang ditunjukkan pada gambar 3.5
dibawah ini:
3.3.4 Flow chart Pembangkitan Kunci Algoritma ElGamal
Dibawah ini merupakan proses pembangkitan kunci dari algoritma FEAL dan
ElGamal. Pembangkitan kunci dapat dilihat dari gambar 3.5 dibawah ini:
Gambar 3.5 Flowchart Pembangkitan Kunci Algoritma FEAL dan ElGamal
3.3.5 Flow chart Enkripsi Algoritma FEAL dan ElGamal
Pada proses ini setiap elemen pada Algoritma Hybrid FEAL dan ElGamal akan
dijelaskan dimana kunci akan dibangkitkan dan dimodulokan dengan n. Hasil proses
enkripsi berupa ciphertext. Gambar 3. 6 merupakan Enkripsi AlGoritma FEAL untuk
Gambar 3.6 Flowchart Enkripsi Algoritma FEAL
Pada proses pada gambar 3.6 merupakan proses dalam pengambilan kunci private dari
algoritma ElGamal, Selanjutna maka akan di generate bilangan prima dalam
pengambilan kunci public ElGamal, selanjutnya ciphertext FEAL dijadikan kunci
Gambar 3.7 Flowchart Ekripsi Algoritma ElGamal
Dari gambar 3.7 Diatas dapat di jelaskan bahwa yang dilakukan pertama adalah input
file teks yaitu dari ciphertext dari algoritma FEAL, setelah itu sistem akan
menampilkan isi ciphetext. Sistem akan menampilkan kasil enkripsi berupa ciphertext
dari algoritma ElGamal, proses enkripsi selesai, ciphertext ditampilkan.
3.3.6 Flow chart Dekripsi Algoritma FEAL dan ElGamal
Proses dekripsi merupakan pengembalian ciphertext ke plaintext (pesan asli). Untuk
Gambar 3.8 Proses Dekripsi ElGamal
Pada gambar 3.8 dapat diketahui bahwa hasil dekripsi ElGamal diperoleh dari dekripsi
dari ciphertext sebelumnya dan pengambilan ciphertext FEAL sebagai kunci private.
3.4Perancangan Sistem
Berdasrkan hasil analisis proses yang berlangsung dalam sistem diperoleh gambaran
yang akan di implementasikan pada sistem. Berasarkan Gambaran ini dilakukan
perancangan antarmuka pengguna dan perancangan, dimana akan diimplentasikan
3.4.1 Perancangan Antar Muka
Pada penelitian ini penulis mencoba menjadikan mozilla firefox sebagai tool yang
digunakan untuk tampilan antarmuka dari program aplikasi. Pada aplikasi main page
dapat dilihat pada gambar 3.9 dibawah ini:
Gambar 3.9 Halaman Utama Program Aplikasi
Berdasarkan gambar 3.9, dimana terdapat halaman utama dari program aplikasi yang dirancang. Selanjutnya, Untuk lebih jelasnya dapat dijelaskan pada tabel 3.4 dibawah ini :
Tabel 3.4 Deskripsi dari Halaman Utama
No Nama Komponen Keterangan
1 Komponen ke-1 Yaitu Halaman identitas dari penulis
2 Komponen ke 2
Yaitu dimulainya program yang memuat tentang enkripsi dan Dekripsi dari Algoritma hybrid FEAL dan ElGamal
IMPLEMENTASI DAN ANALISIS KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL
DALAM PENGAMANAN FILE TEKS
SKRIPSI
SYABUL MAJID 131421058
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2015
START
1
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi Sistem
Setelah dilakukan analisis dan perancangan pada bab 3, proses selanjutnya adalah
implementasi yang telah dibuat pada landasan matematik dan desain logika pada
tahap sebelumnya di bab 3 tersebut.
Implementasi sistem merupakan hasil analisis dan perancangan sistem kedalam
sebuah bahasa pemograman. Implementasi sistem pada penelitian tugas akhir ini
dibangun menggunakan bahasa pemograman PHP. Bahasa PHP merupakan bahasa
open source dan berjalan di web browser mozilla firefox.
4.1.1 Halaman Utama (Main Page)
Pada main page ini merupakan page yang pertama kali muncul saat aplikasi
dijalankan. Halaman ini terdiri dari tools button yang sebagai jalan pintas dalam
enkripsi dan dekripsi algoritma hybrid yaitu algoritma FEAL dan ElGamal. Halaman
utama dapat dilihat dalam gambar 4.1 dibawah ini:
4.1.2 Form key Generator
Form key generator merupakan form untuk membangkitkan bilangan prima, p, g dan
y. Dimana kita akan mendaptkan kunci public dan kunci private. Form ini dapat dilihat pada gambar 4.2 berikut ini:
Gambar 4.2 Key Generator algoritma ElGamal
4.1.3 Pengambilan kunci dari algoritma FEAL (Hasil proses enkripsi dan Hasil dekripsi algoritma FEAL)
a. Hasil Proses enkripsi algoritma FEAL
Pada proses ini akan algoritma FEAL melakukan enkripsi yang bertujuan untuk
mengubah plaintext menjadi ciphertext. Pada proses ini algoritma FEAL juga
melakukan enkripsi biasa yaitu memasukkan plaintext dan key kemudian
menghasilkan output ciphertext. Pada enkripsi algoritma FEAL proses ini akan
Gambar 4.3 Proses enkripsi algoritma FEAL
Pada proses ini plaintext yaitu berupa karakter dalam bentuk kalimat “target januari 2016!” menghasilkan ciphertext berupa karakter
“xACwCLvCjVbrMmlWYS/6SBwRBFdmyn6ERguy6w==” dimana jumlah karakter ciphertext lebih panjang dari plaintext.
b. Hasil Proses Dekripsi algoritma FEAL
Pada proses ini merupakan proses mengembalikan proses ciphertext menjadi plaintext
pada algoritma FEAL. Pada proses ini walaupun pada ciphertext menghasilkan
karakter yang berbeda-beda ketika di generate, namun decrypt akan menghasilkan
karakter sama dengan plaintext sebelumnya asalkan key yang sebelumnya sama.
Untuk proses dekripsi algoritma FEAL dapat dijelaskan pada gambar 4.4 berikut
Gambar 4.4 Dekripsi pada algoritma FEAL
4.1.4 Implementasi dan pengujian Algoritma Hybrid FEAL dan ElGamal (Hasil Proses Enkripsi dan Hasil Dekripsi algoritma ElGamal dengan mengambil ciphertext FEAL sebagai Key ElGamal)
a. Proses Enkripsi algoritma Elgamal dengan key ciphertext FEAL sebagai key private FEAL
Pada proses ini algoritma ini algoritma ElGamal membutuhkan ciphertext FEAL
sebagai kunci private ElGamal, maka berdasarkan kasus ini ditarik kesimpulan bahwa
Hybrid Cryptosistem dimana menggabung dua algoritma enkrispi simetris (algoritma FEAL) menjadi key algoritma ElGamal. Untuk implementasi dalam sistem dapat
Gambar 4.5 Enkripsi Algoritma ElGamal
Berasarkan gambar maka dapat dikatui bahwa key ciphertxt algoritma FEAL diambil
untuk menjadi private key algoritma ElGamal. Dimana ciphertext pada (sub bab 4.1.3
point a) dengan ciphertext
“xACwCLvCjVbrMmlWYS/6SBwRBFdmyn6ERguy6w==”
menjadi key algoritma ElGamal. Elgamal sebagai kunci asimetris yang memiliki
kunci public dan kunci private maka kunci private diambil dari ciphertext algoritma
FEAL penggabungan hal ini penulis sebut sebagai hybrid cryptosystem
.
Dalam ciphertext ElGamal maka dapat di sajikan ciphertex dalam bentuk decimal
yaitu:
“669 598 669 231 669 45 669 623 669 1377 669 1367 669 457 669 814 669 447 669 1196 669 437 669 35 669 251 669 638 669 995 669 231 669 834 669 45 669 1196
669 1407 669 1176 669 50 669 1387 669 1216 669 809 669 437 669 603 669 1216
669 1362 669 824 669 603 669 598 669 613 669 1397 669 236 669 1216 669 1206
b. Proses Dekripsi algoritma Elgamal dengan key ciphertext FEAL sebagai key private FEAL
Pada proses dekripsi yaitu pembalikan ciphertext menjadi plaintext. Dalam Hybrid
Cryptosystem dalam penelitian tugas akhir ini yaitu dimasukkan key FEAL dan
dilakukan Generate Decrypt algoritma ElGamal. Untuk hasil proses decryption maka
dapat dilihat dalam gambar 4.6 dan 4.7 berikut dibawah ini:
Contoh 1:
Gambar 4.6 Dekripsi ElGamal dengan menggunakan Hybrid FEAL
Dari pengujian dan bersarkan gambar diatas maka dapat disimpulkan bahwa plaintext
ElGamal yang yaitu ciphertxt FEAL merupakan karakter yang sama dengan plaintext
FEAL yaitu:
Contoh 2:
Contoh dekripsi algoritma ElGamal dengan menggunakan Key Algoritma FEAL pada (sub bab 4.3 point a yaitu “12345”)
Gambar 4.7 proses Dekripsi Algoritma ElGamal contoh ke-2
Pada gambar 4.7 diatas merupakan generate decrypt dari algoritma ElGalam dengan
menggunakan key FEAL “12345” mengasilkan ciphertext
“669 834 669 251 669 452 669 1397 669 1015 669 834 669 20 669 447 669 251 669
1211 669 1025 669 251 669 452 669 256 669 20 669 412 669 30 669 221 669 1176
669 211”
4.2Hasil Implementasi Sistem
4.2.1 Uji coba panjang kunci dan panjang karakter plaintext proses enkripsi dan dekripsi algoritma FEAL dan ElGamal
a. Uji ke-1 (time 0.858 s)
Uji ke-1 dilakukan dengan panjang karakter sebanyak 40 karakter dan panjang
kunci 10 dengan plaintext “syabrul majid ekstensi ilmu komputer usu” dan key yaitu “1234567890” yaitu dapat dilihat pada gambar 4.8 berikut dibawah ini:
Gambar 4.8 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk
Key ElGamal dengan panjang plaintext 40 dan panjang key 10
Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.
Gambar 4.9 Pengujian ElGamal dengan mendapatkan key dari algoritma FEAL time
0.858s
b. Uji ke-2 (time 1.899 s)
Uji ke-2 dilakukan dengan panjang karakter sebanyak 91 karakter dan panjang
kunci 21 dengan plaintext “syabrul majid ekstensi ilmu komputer usu tahun 2013 dengan Nomor Induk Mahasiswa 131421058” dan key yaitu
“1234567890qwertyuiopa” yaitu dapat dilihat pada gambar 4.10 berikut dibawah ini:
Gambar 4.10 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk
Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.
Dapat dilihat pada gambar 4.11 berikut dibawah ini:
Gambar 4.11 Pengujian ElGamal dengan mendapatkan key dari algoritma FEAL
time 1.899s
c. Uji ke-3 (time 5.097s)
Uji ke-3 dilakukan dengan panjang karakter sebanyak 193 karakter dan panjang
kunci 51 dengan plaintext
“syabrul majid ekstensi ilmu komputer usu tahun 2013 dengan Nomor Induk Mahasiswa 131421058 dengan judul skripsi "IMPLEMENTASI DAN ANALISIS
KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL
DALAM PENGAMANAN FILE TEKS tahun 2016 medan"” dan key yaitu
Gambar 4.12 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk
Key ElGamal dengan panjang plaintext 193 dan panjang key 51
Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.
Dalam proses enkripsi, dapat dilihat pada gambar 4.13 berikut dibawah ini:
Gambar 4.13 Pengujian ElGamal dengan mendapatkan key dari algoritma FEAL
d. Uji ke-4 (time 7.758 s)
Uji ke-4 dilakukan dengan panjang karakter sebanyak 366 karakter dan panjang
kunci 51 dengan plaintext
“syabrul majid ekstensi ilmu komputer usu tahun 2013 dengan Nomor Induk Mahasiswa 131421058 dengan judul skripsi "IMPLEMENTASI DAN ANALISIS
KRIPTOGRAFI HYBRID ALGORITMA FEAL DAN ALGORITMA ELGAMAL
DALAM PENGAMANAN FILE TEKS tahun 2016 medan" Dosen Pembimbing 1.
Bapak Muhammad M. Andri Budiman, ST, MCompSc, MEM dan dosen Pembimbing 2.
Ibu Dian Rachmawati, S.Si, M.Kom” dan key yaitu
“1234567890qwertyuiopasdfghjklzxcvbnmasdfgghjklzxcvb” yaitu dapat dilihat pada gambar 4.14 berikut dibawah ini:
Gambar 4.14 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk
Key ElGamal dengan panjang plaintext 329 dan panjang key 51
Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.
Gambar 4.15 Pengujian ElGamal dengan mendapatkan key dari algoritma FEAL
time 7.758s
e. Uji ke-5 (time 23.829s)
Uji ke-5 dilakukan dengan panjang karakter sebanyak 1135 karakter dan panjang
kunci 70 dengan plaintext
Kata Kunci : Kriptografi, simetris, asimetris, FEAL (Fast Data Enchiperment Algorithm),
ElGamal, Hybrid Cryptosystem, Lehmann Prime Generator
” dan key yaitu “1234567890qwertyuiopasdfghjklzxcvbnmasdfgghjklzxcvb” yaitu dapat dilihat pada gambar 4.14 berikut dibawah ini:
Gambar 4.16 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk
Setelah mendapatkan ciphertext FEAL maka selanjutnya dijadikan Key ElGamal.
Dalam proses enkripsi, dapat dilihat pada gambar 4.13 berikut dibawah ini:
Gambar 4.17 Hasil pengujian ke-1 mengambil mendapatkan ciphertext FEAL untuk
Key ElGamal dengan panjang plaintext 1135 dan panjang key 51
Hasil Uji coba implentasi dari algoritma Hybrid FEAL dan ElGamal dapat diketahui
dari melihat tabel 4.1berikut dibawah ini:
Tabel 4.1 Hasil ujicoba Enkripsi dari 5 kali percobaan dengan beragam panjang key
dan plaintext
Uji coba ke- Panjang Plaintext (karakter) Panjang key Waktu / s
1 40 10 0.858
2 91 21 1.899
3 193 51 5.097
5 1.135 51 23.829
Dapat dilihat dari gambar 4.15 dalam bentuk diagram garis dibawah ini:
Gambar 4.18 Tingkatan jumlah panjang karakter dalam Algoritma Hybrid FEAL dan
ElGamal
Dari diagram diatas dapat diketaui bahwa semakin panjang karakter plaintex dan key
maka waktu yang dibutuhkan semakin lama. Begitupun juga untuk dekripsi pesan
dalam pengamanan data Hybrid Cryptosystem Algoritma FEAL dan ElGamal.
Dimana semakin panjang key dan plaintext yang dimasukkan maka waktu yang
dibutuhkan akan semakin lama yaitu dapat dilihat pada gambar 4.18 diatas dimana
jumlah waktu dengan plaintext terlihat signifikan. Waktu dalam 1135 karakter pesan
termasuk spasi membutuhkan waktu 23.82 Sekon , berbeda dengan plaintext yang
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
1. Algoritma kriptografi FEAL merupakan sebuah metode penyandian data
dengan algoritma simetris, sedangkan algoritma algoritma ElGamal
merupakan gabungan antara algoritma simetris dan asimetris dengan memakai
FEAL sebagau kunci dari ElGamal maka disebut hybrid Cryptosystem.
2. FEAL menerima masukan berupa 64-bit plaintext dan 64-bit kunci, dan
menghasilkan 64-bit ciphertext. FEAL memiliki fungsi f yang sederhana,
dengan menggunakan operasi XOR didalamnya, hal ini membuat FEAL
menjadi algoritma sederhana dan memiliki proses yang cepat. Sedangkan
proses dekripsi yang terjadi pada FEAL menggunakan proses yang sama
dengan proses enkripsi.
3. Semakin panjang ukuran dan file yang di enkripsi semakin besar berpengaruh
terhadap waktu dalam enkripsi dan dekripsinya. Satuan waktu yang digunakan
dalam skripsi ini adalah satuan waktu dalam sekon/detik.
4. Dalam tugas akhir ini perancangan aplikasi telah mampu memenuhi syarat dan
kelayakan dalam enkripsi Hybrid Algoritma FEAL dan ElGamal, serta mampu
dalam proses enkripsi dan dekripsi pesan baik berupa karakter maupun berupa
dokumen *txt, *rtf.
5. Dalam aplikasi yang telah dibangun file teks yang telah dilakukan enkripsi
menjadi cipherteks khususnya dalam algoritma FEAL sebagi kunci memiliki
panjang karakter yang lebih panjang dari plaintext, dan digunakan dalam key
untuk Algoritma ElGamal. Dan dalam Algoritma dibagi menjadi Blok-blok
yang berupa bilangan desimal.
6. Semakin panjang plaintext baik berupa karakter maupun file teks berupa *.txt,
5.2 Saran
Saran-saran yang ingin disampaikan oleh penulis setelah menyelesaikan penelitian
sederhana dalam skripsi ini adalah sebagai berikut:
1. Sebaiknya mengadakan penilitian lebih lanjut tentang perfomasi kekuatan dari
Hybrid FEAL dan ElGamal.
2. Aplikasi ini berupa pesan teks, bagi yang ingin mengembangkan aplikasi lebih
lanjut penulis berharap dikembangkan dalam bentuk image seperti “*.png, *.jpg, *.bmp”. Maupun teks yang memiliki ukuran lebih besar seperti *.pdf.
3. Key enkripsi dalam aplikasi ini hanya sekali pakai maka, sebaiknya ditambah fasilitas penyimpanan key, sehingga key-key yeng telah dipakai memiliki
BAB 2
TINJAUAN PUSTAKA
3.1. Latar Belakang
3.1.1. Pengertian Kriptografi
Kriptografi berasal dari kata kripto dan grafi. Kripto berarti menyembunyikan, dan
grafi yaitu ilmu. Kriptografi (cryptography) adalah suatu ilmu yang mempelajari suatu
sistem penyandian untuk menjamin kerahasiaan dan keamanan data. Orang yang
melakukan disebut Criptographer. Kriptografi merupakan ilmu yang mempelajari
teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti
kerahasiaan data, keabsahan data, dan integritas data serta autentifikasi data (Menezes,
1996)
Sisem kriptografi klasik umumnya menggunakan metode subtitusi atau transposisi
dan telah digunakan jauh sebelum komputer ditemukan. Terdapat beberapa komponen
utama dalam sistem kriptografi yaitu:
Secara umum, istilah kriptografi yang sering digunakan adalah (Munir, 2006):
1. Pesan
Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya,
pesan sering juga disebut dengan plaintext atau teks jelas (cleartext). Plaintext
merupakan suatu pesan bermakna yang akan diproses menggunakan algoritma
kriptografi.
2. Ciphertext
Cipertext atau di sebut dengan cryptosystem merupakan pesan yang telah tersandi. Pesan dalam bentuk ciphertext tidak dapat dibaca karena berisi
3. Enkripsi
Enkripsi merupakan proses penyandian plaintext menjadi ciphertext atau
disebut sebagai enciphering. Enkripsi dilakukan dengan tujuan agar plaintext
tersebut tidak dapat dibaca oleh pihak yang tidak memiliki otoritas
(wewenang).
4. Dekripsi
Dekripsi merupakan proses pengembalian ciphertext menjadi plaintext semula
atau di sebut deciphering. Dekripsi dilakukan ketika pesan telah sampai
kepada pihak yang dituju.
5. Kunci (key).
Kunci (key) adalah parameter yang digunakan untuk transformasi enkripsi dan
dekripsi. Kunci dapat juga berupa string atau deretan bilangan. Keamanan
suatu algoritma kriptografi biasanya tergantug kepada kerahasiaan penyebaran
key.
6. Kriptosistem (cryptosystem)
Cryptosystem adalah perangkat keras atau implementasi perangkat lunak kriptografi yang diperlukan atau mentranformasi sebuah pesan asli menjadi
ciphertext atau juga sebaliknya.
3.1.2. Jenis Kriptografi
Menurut (Munir, 2006) terdapat dua jenis algoritma kriptografi berdasarkan jenis
kunci yang digunakan, yaitu:
1. Algoritma Kriptografi Simetri (Konvensional) / Symetric Cryptosystem
2. Algoritma Kriptografi Asimetri (Kunci Publik) / Assymetric Cryptosystem
1. Kriptografi Simetri / Symetric Cryptosystem
Konsep dasar dari kriptografi simetri adalah kunci yang digunakan untuk enkripsi
merupakan kunci yang sama dengan kunci untuk dekripsi. Istilah lain untuk
kriptografi simetri adalah kriptografi kunci privat (private-key cryptography).
Kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional
dekripsi yang kuncinya harus dirahasiakan. Dan contoh disini yang diambil adalah
DES (Data Encrpytion Standart), Blowfish, IDEA. Dua kategori yang termasuk
algoritma simetri adalah algoritma blok cipher dan stream cipher. Proses enkripsi
dan dekripsi dapat dilihat pada gambar 2.1 dibawah ini:
Gambar 2.1 Proses enkripsi dan dekripsi Simetric Cryptosystem
a. Block Cipher
Algoritma block cipher adalah algoritma yang masukan dan keluarannya
berupa satu block, dan setiap blocknya terdiri dari banyak bit. Beberapa mode
operasi enkripsi block cipher.
1. Data Encryption Standard (DES) 2. AES (Advanced Encryption Standard)
3. Blowfish
b. Stream Cipher
Stream cipher (cipher aliran) adalah cipher yang berasal dari hasil XOR antara bit plaintext dengan setip bit kuncinya. Stream cipher sangat rawan terhadap
attack dan pembalikan kunci. Beberapa model algoritma stream cipher adalah antara lain:
1. One Time Pad (OTP) 2. Rivest Code 4 (RC4)
Kelebihan algoritma simetri adalah:
a. Proses enkripsi dekripsi kriptografi simetri membutuhkan waktu yang relatif
singkat.
b. Ukuran kunci yang relatif pendek.
c. Otentifikasi pengiriman pesan langsung diketahui dari ciphertext yang diterima
Kekurangan kriptografi simetri adalah:
a. Kunci simetri harus dikirim melalui saluran komunikasi yang aman dan kedua
entitas yang berkomunikasi harus menjaga kerahasiaan kunci.
b. Kunci harus sering diubah, setiap kali melaksanakan komunikasi.
2. Kriptografi Asimetri / Symetric Cryptosystem
Konsep dasar kriptografi asimetri sering juga disebut dengan algoritma kunci publik
(plaintext key), dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan
dekripsi berbeda. Pada algoritma simetri kunci dibagi dua bagian, yaitu:
1. Kunci umum (public key): kunci yang boleh dikataui oleh semua orang / kunci
dipublikasikan.
2. Kunci rahasia (private key): kunci yang dirahasiakan / hanya diketui oleh
pengirim dan penerima pesan saja.
Kunci-kunci tersebut berhubungan satu dengan yang lain. Dengan kunci
plaintext orang dapat mengenkripsi pesan tapi tidak bisa mendekripsikannya. Hanya orang yang memiliki kunci rahasia yang dapat di dekripsi pesan tersebut. Algoritma
asimetri dapat mengirim pesan dengan lebih aman dari algoritma simetri.
Dalam kriptografi asimetris digunakan dua buah kunci yang berbeda dalam
proses enkripsi dan dekripsi lagi. Salah satu disebut kunci publik (plaintext key) dapat
dipublikasikan. Sedangkan kunci yang lain disebut kunci privat (private key) yang
harus dirahasiakan. Misalnya bila A mengirim pesan kepada B, A dapat menyandikan
pesannya menggunakan kunci plaintext B, dan bila B ingin membaca pesan tersebut,
maka Si B tersebut perlu mendekripsikan dengan kunci privatnya. Dengan demikian
kedua belah pihak dapat menjamin asal pesan serta keaslian pesan tersebut, karena
adanya mekasnisme ini. Contoh dari sistem ini antara lain RSA Scheme dan Merkie
Hellman Scheme. Proses enkripsi dan dekripsi pada algoritma asimetri dapat dilihat
Gambar 2.2 Proses Enkripsi dan dekripsi Asymetric Cryptosystem
3.1.3. Tujuan Kriptografi
Ditinjau dari tujuan kriptografi sendiri adalah sebagai berikut (Menezes, Oorschot dan
Vanstone, 1996):
1. Kerahasiaan (confidentialy)
Merupakan layanan yang bertujuan untuk mendaga agar pesan tidak dapat
dibaca oleh pihak-pihak yang tidak memiliki otoritas (wewenang). Dalam
kriptografi layanan ini dapat direalisasikan dengan menyandikan pesan
ciphertext. Misalnya kata “majid” dapat disandikan dengan “abcde”. Istilah lain yang serupa dengan confidentialy adalah secrecy dan privacy.
2. Integritas data (data integrity)
Merupakan layanan yang menjamin bahwa pesan asli masih uth atau belum
dimanipulasi selama proses pengiriman. Dengan kata lain, aspek keamanan ini dapat diungkap sebagai pertanyaan “ apakah pesan yang diterima masih asli atau sudah di lakukan modifikasi”.
3. Otentifikasi (autentification)
Merupakan layanan yang berhubungan dengan identifikasi, baik
mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user autentification atau entity autentification). Dua pihak yang saling berkomunikasi harus dapat mengidentifikasi satu sama yang lainnya sehingga
si penerima memastikan sumber pesan.
4. Non-repudiation
Merupakan layanan untuk mencegah entitas yang berkomunikasi melakukan
penyangkalan, yaitu si pengirim pesan menyangkal melakukan pengiriman
3.1.4. Serangan Terhadap Kriptografi
Attack (serangan) merupakan suatu usaha yang dilakukan oleh seorang kriptanalis untuk menemukan kunci atau plaintext ke ciphertext dalam suatu sistem kriptogafi.
Kriptanalis akan berusaha untuk menemukan plaintext dari ciphertext tanpa memiliki
akses kunci yang digunakan dari sistem kriptografi. Berdasarkan teknik yang
digunakan dalam menemukan kunci, serangan dapat dibagi menjadi exahaustive atau
brute force attack dan analytical attack (Fitria, 2007).
Exhaustive atau brute force attack merupakan serangan untuk mendapatkan plaintext dai ciphertext dengan mencoba satu persatu kombinasi atau kemungkinan kunci yang digunakan. Dalam hal ini kriptanalis harus tahu jenis algoritma kriptografi
yang digunakan oleh pengirim pesan dan juga memiliki sejumlah plaintext dan
ciphertext.
a. Berdasarkan keterlibatan penyerang dalam komunikasi, serangan dapat dibagi
atas dua macam, yaitu serangan pasif dan serangan aktif:
1. Serangan aktif
Pada serangan ini, penyerang mengintervensi komunikasi dan ikut mempengaruhi
sistem untuk keuntungan pribadinya. Misalnya penyerang mengubah aliran pesan
seperti menghapus sebagian ciphertext, mengubah ciphertext, menyisipkan
potongan ciphertext palsu, me-replay pesan lama, mengubah informasi yang
tersimpan, dan sebagainya.
2. Serangan pasif
Pada proses ini, penyerang tidak terlibat dalam komunikasi antara pengirim dan
penerima pesan, namun penyerang menyadap semua pertukaran pesan antara
kedua entitas tersebut, tujuan utamanya adalah untuk mendapatkan sebanyak
2.1.5 Teknik Enkripsi dan Dekripsi
a. Teknik Subtitusi
Teknik subtitusi akan diganti suatu kode dengan kode yang lain, degan menggunakan
tabel subtitusi. Dapat ditampilkan dalam tabel dibawah ini. Dapat dilihat pada tabel
2.1 dibawah ini:
Tabel 2.1 Teknik subtitusi
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
M A J I D ! @ # $ % ^ & * ( ) S Y 4 B R U L 0 1 2 3
Tabel subtitusi diatas dibuat secara acak, misalkan huruf A akan diganti dengan huruf M, dan huruf B diganti dengan huruf A begitu seterusnya. Misalkan kata “ENKRIPSI” akan dienkripsi dengan teknik subtitusi dengan tabel diatas menjadi “D(^4$SBS”. Untuk memperoleh kata “ENKRIPSI” kembali maka dilakukan pula melihat tabel subtitusi diatas.
b. Teknik Blocking
Teknik blocking yaitu membagi pesan plaintext kedalam blok-blok pesan yang kemudian akan di enkripsi secara independen. Misalkan kalimat “TEKNIK BLOCKING ENCRYPTION METHODE ” akan dibagi kedalam blok-blok sebagai berikut. Dapat dilihat pada tabel 2.2 dibawah ini:
Tabel 2.2 Teknik Blocking
T K C space Y N H
E space K E P space O
K B I N T M D
N L N C I E E