• Tidak ada hasil yang ditemukan

Implementasi dan Analisis Kriptografi Hybrid Algoritma FEAL dan Algoritma ElGamal Dalam Pengamanan File Teks

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi dan Analisis Kriptografi Hybrid Algoritma FEAL dan Algoritma ElGamal Dalam Pengamanan File Teks"

Copied!
30
0
0

Teks penuh

(1)
(2)

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

6. Pendidikan Terakhir

- Ayah : SMP

- Ibu : SD

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,

(3)

LISTING PROGRAM

Index.php

<?php

session_start();

include "elgamal.php";

require 'nor1.class.php'; require 'norctr.class.php';

$timer = microtime(true);

$pw = empty($_POST['pw']) ? '' : $_POST['pw']; $pt = empty($_POST['pt']) ? '' : $_POST['pt'];

$cipher = empty($_POST['cipher']) ? '' :

$_POST['cipher'];

$plain = empty($_POST['plain']) ? '' :

$_POST['plain'];

$encr = empty($_POST['encr']) ? $cipher :

FEALCtr::encrypt($pt, $pw, 256) ;

$decr = empty($_POST['decr']) ? $plain :

FEALCtr::decrypt($cipher, $pw, 256);

$enkripsi = new

elgamal($_SESSION['p'],$_SESSION['g'],$_SESSION['x'],$_SE SSION['y'],$_SESSION['k']);

$dekripsi = new

elgamal($_SESSION['p'],$_SESSION['g'],$_SESSION['x'],$_SE SSION['y'],$_SESSION['k']);

$cipherkey = empty($_POST['cipherkey']) ? '' : $_POST['cipherkey'];

$plainkey = empty($_POST['plainkey']) ? '' : $_POST['plainkey'];

$chippertextkey = empty($_POST['enkey']) ?

$cipherkey : $enkripsi->_enkripsi($plainkey) ;

$plaintextkey = empty($_POST['dekey']) ? $pw :

$enkripsi->_dekripsi($cipherkey) ;

if(!isset($_SESSION['username'])) { header('location:login.php'); }

else { $username = $_SESSION['username']; } require_once("koneksi.php");

$query = mysql_query("SELECT * FROM user WHERE username = '$username'");

$hasil = mysql_fetch_array($query); ?>

(4)

<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->

<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->

<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->

<!--[if gt IE 8]><!-->

<html class="no-js"> <!--<![endif]--> <html lang="en" class="no-js">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible"

content="IE=edge">

<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 :&nbsp;<?=

round(microtime(true) - $timer, 3) ?>s</div></p>

<a id="trigger-overlay" class="nav_slide_button

nav-toggle"

href="../template/index.php"><span></span></a></div> </div>

<div class="row hero-content"> <div class="col-md-12">

<body bgcolor="#284666">

<script language="JavaScript" type="text/javascript"> // function to hide and show a navigation menu

(5)

var aMenu = document.getElementById(aMenu);

aMenu.style.display = (aMenu.style.display == "block") ? "none" : "block";

}

</script>

<script language="JavaScript" type="text/JavaScript"> function DisplayShowHide()

{

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 &nbsp; : </td>

<td><form name='NamaForm' method='post' action='#'>

<select style="width:500px" name='NamaSelection'

onchange='DisplayShowHide()'>

<option value='hilang' selected>Text</option> <option value='muncul'>File</option></td>

</select> </form> <br> </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">

(6)

<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> </p> </div>

<div id='DivTampil2'> <p><form method="post">

<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>

(7)

<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> </table> </form>

</p>

</div></div>

<aside><div class="lg-container2">

<b><h3>Key Generator</h3></b>

<input type="text" size="27" value="<?= $_SESSION['p'] ?>"></td>

</tr> <tr>

<td>g</td><td>&nbsp;:

<input type="text" size="27" value="<?= $_SESSION['g'] ?>"></td>

</tr>

<tr>

<td>y</td><td>&nbsp;:

<input type="text" size="27" value="<?= $_SESSION['y'] ?>"></td>

<input type="text" size="27" value="<?= $_SESSION['x'] ?>"></td>

(8)

<td>p</td><td>&nbsp;:

<input type="text" size="27" value="<?= $_SESSION['p'] ?>"></td>

</tr> </table> <table>

<b>Bilangan Acak Pengirim (k)</b>

<tr>

<td>k</td><td>&nbsp;:

<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> </tr>

<div class="lg-container3"> <b><h3>Elgamal Key Encryption</b></h3>

<form method="post"> Key :

<table>

<tr>

<td><input type="text" name="plainkey" style="width:219px" placeholder="type key here"><?= $pw ?></td>

</tr>

type="submit" name="enkey" value="Encrypt

it">Encrypt</button></td>

<td><input type="text"

name="cipherkey" size="20" value="<?=

rtrim($chippertextkey) ?>" "/t"></td> </tr> </table>

(9)

<table>

<tr>

Encrypted Key:

</tr>

<td><button type="submit" name="dekey" value="Decrypt it">Decrypt</button></td>

<td><input type="text" name="pw" size="20" value="<?= $plaintextkey ?>"></td>

</tr>

</table> </form>

</div></div></aside>

</body> </html>

Login.php

<html> <head>

<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>

(10)

<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>

</table> </div> </html> </body>

ProsesLogin.php

<?php session_start();

require_once("koneksi.php"); $username = $_POST['username']; $pass = $_POST['password'];

$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 {

if($pass = $hasil['password']) {

echo 'Password Salah!';

echo '<a href="login.php">Back</a>'; }

else

{

$_SESSION['username'] = $hasil['username']; header('location:index.php');

} }

?>

Logout.php

<?php session_start();

(11)

echo "<script language=\"javascript\">location.href='login.php';</scrip t>";

?>

Nor1.class.php

<?php

Class FEAL {

public static function cipher($input, $w) {

$Nb = 4;

$Nr = count($w) / $Nb - 1;

$state = array();

for ($i = 0; $i < 4 * $Nb; $i++) $state[$i % 4][floor($i / 4)] = $input[$i];

$state = self::addRoundKey($state, $w, 0, $Nb);

for ($round = 1; $round < $Nr; $round++) { $state = self::subBytes($state, $Nb); $state = self::shiftRows($state, $Nb); $state = self::mixColumns($state, $Nb);

$state = self::addRoundKey($state, $w,

$round, $Nb); }

$state = self::subBytes($state, $Nb); $state = self::shiftRows($state, $Nb);

$state = self::addRoundKey($state, $w, $Nr, $Nb);

$output = array(4 * $Nb);

for ($i = 0; $i < 4 * $Nb; $i++) $output[$i] = $state[$i % 4][floor($i / 4)];

return $output; }

private static function addRoundKey($state, $w, $rnd, $Nb)

{

for ($r = 0; $r < 4; $r++) {

for ($c = 0; $c < $Nb; $c++) $state[$r][$c] ^= $w[$rnd * 4 + $c][$r];

}

(12)

private static function subBytes($s, $Nb) {

private static function shiftRows($s, $Nb) {

private static function mixColumns($s, $Nb) {

(13)

$Nb = 4; self::$rCon[$i / $Nk][$t];

} else if ($Nk > 6 && $i % $Nk == 4) {

private static function subWord($w) {

(14)

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);

(15)
(16)

Norctr.class.php

<?php

Class FEALCtr extends FEAL {

public static function encrypt($plaintext, $password, $nBits)

{

$blockSize = 16;

if (!($nBits == 128 || $nBits == 192 || $nBits == 256)) return '';

$nBytes = $nBits / 8; $pwBytes = array();

for ($i = 0; $i < $nBytes; $i++) $pwBytes[$i] = ord(substr($password, $i, 1)) & 0xff;

$key = FEAL::cipher($pwBytes,

FEAL::keyExpansion($pwBytes));

$key = array_merge($key, array_slice($key, 0, $nBytes - 16));

$counterBlock = array();

$nonce = floor(microtime(true) * 1000); $nonceMs = $nonce % 1000;

$nonceSec = floor($nonce / 1000); $nonceRnd = floor(rand(0, 0xffff));

for ($i = 0; $i < 2; $i++) $counterBlock[$i] = 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) /

$blockSize);

$ciphertxt = array();

for ($b = 0; $b < $blockCount; $b++) {

for ($c = 0; $c < 4; $c++) $counterBlock[15 - $c] = self::urs($b, $c * 8) & 0xff;

(17)

$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]); }

$ciphertxt[$b] = implode('', $cipherByte); }

$ciphertext = $ctrTxt . implode('', $ciphertxt); $ciphertext = base64_encode($ciphertext);

return $ciphertext; }

public static function decrypt($ciphertext,

$password, $nBits) {

$blockSize = 16;

if (!($nBits == 128 || $nBits == 192 || $nBits == 256)) return '';

$ciphertext = base64_decode($ciphertext);

$nBytes = $nBits / 8; $pwBytes = array();

for ($i = 0; $i < $nBytes; $i++) $pwBytes[$i] = ord(substr($password, $i, 1)) & 0xff;

$key = FEAL::cipher($pwBytes,

FEAL::keyExpansion($pwBytes));

$key = array_merge($key, array_slice($key, 0, $nBytes - 16));

$counterBlock = array();

$ctrTxt = substr($ciphertext, 0, 8);

for ($i = 0; $i < 8; $i++) $counterBlock[$i] = ord(substr($ctrTxt, $i, 1));

$keySchedule = FEAL::keyExpansion($key);

(18)

$nBlocks = ceil((strlen($ciphertext) - 8) / $blockSize);

$ct = array();

for ($b = 0; $b < $nBlocks; $b++) $ct[$b] = substr($ciphertext, 8 + $b * $blockSize, 16);

$ciphertext = $ct; $plaintxt = array();

for ($b = 0; $b < $nBlocks; $b++) {

for ($c = 0; $c < 4; $c++) $counterBlock[15 - $c] = self::urs($b, $c * 8) & 0xff;

for ($c = 0; $c < 4; $c++) $counterBlock[15 - $c - 4] = self::urs(($b + 1) / 0x100000000 - 1, $c * 8) & 0xff;

$cipherCntr = FEAL::cipher($counterBlock,

$keySchedule);

$plaintxtByte = array();

for ($i = 0; $i < strlen($ciphertext[$b]); $i++) {

$plaintxtByte[$i] = $cipherCntr[$i] ^

ord(substr($ciphertext[$b], $i, 1));

$plaintxtByte[$i] =

chr($plaintxtByte[$i]);

}

$plaintxt[$b] = implode('', $plaintxtByte); }

$plaintext = implode('', $plaintxt);

return $plaintext; }

private static function urs($a, $b) {

$a &= 0xffffffff; $b &= 0x1f;

if ($a & 0x80000000 && $b > 0) { $a = ($a >> 1) & 0x7fffffff; $a = $a >> ($b - 1);

} else {

$a = ($a >> $b); }

(19)

}

/* - - - - - - */

Key.php

<?php

session_start();

include "elgamal.php";

$key = new elgamal(0,0,0,0,0); $key->_key(258);

$_SESSION[p] = $key->p; $_SESSION[g] = $key->g; $_SESSION[x] = $key->x; $_SESSION[y] = $key->y; $_SESSION[k] = $key->k;

echo "<script

language=\"javascript\">location.href='index.php';</scrip t>";

?>

<html><h1>Please Wait</h1> </html>

feal.php

<?php

session_start();

include "elgamal.php";

require 'nor1.class.php'; require 'norctr.class.php';

$timer = microtime(true);

$pw = empty($_POST['pw']) ? '' : $_POST['pw'];

$pt = empty($_POST['pt']) ? '' : $_POST['pt'];

$cipher = empty($_POST['cipher']) ? '' :

$_POST['cipher'];

$plain = empty($_POST['plain']) ? '' :

$_POST['plain'];

$encr = empty($_POST['encr']) ? $cipher :

FEALCtr::encrypt($pt, $pw, 256) ;

$decr = empty($_POST['decr']) ? $plain :

FEALCtr::decrypt($cipher, $pw, 256);

$enkripsi = new

(20)

$dekripsi = new elgamal($_SESSION['p'],$_SESSION['g'],$_SESSION['x'],$_SE SSION['y'],$_SESSION['k']);

$cipherkey = empty($_POST['cipherkey']) ? '' : $_POST['cipherkey'];

$plainkey = empty($_POST['plainkey']) ? '' : $_POST['plainkey'];

$chippertextkey = empty($_POST['enkey']) ?

$cipherkey : $enkripsi->_enkripsi($pw) ;

$plaintextkey = empty($_POST['dekey']) ? $plainkey : $enkripsi->_dekripsi($cipherkey) ;

?>

<!DOCTYPE html>

<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->

<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->

<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->

<!--[if gt IE 8]><!-->

<html class="no-js"> <!--<![endif]--> <html lang="en" class="no-js">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible"

content="IE=edge">

<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

(21)

<a id="trigger-overlay" class="nav_slide_button nav-toggle"

href="../template/index.php"><span></span></a></div> </div>

<div class="row hero-content"> <div class="col-md-12">

<body bgcolor="#284666">

<script language="JavaScript" type="text/javascript"> // 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";

}

</script>

<script language="JavaScript" type="text/JavaScript"> function DisplayShowHide()

{

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 &nbsp; : </td>

<td><form name='NamaForm' method='post' action='#'>

<select style="width:500px" name='NamaSelection'

onchange='DisplayShowHide()'>

<option value='hilang' selected>Text</option> <option value='muncul'>File</option></td>

(22)

</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">

<br><input type="file" name="fName"> <br>Pilih Proses :

<select style="width:770px" name="aksi"> <option value="enc">Enkripsi</option> <option value="dec">Dekripsi</option> </select></br>

<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> </p> </div>

<div id='DivTampil2'> <p><form method="post">

<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 class="wrapper"> <div class="menuHeader"

onclick="showHide('menu1')">Encrypt Key </div>

(23)

<tr>

<td colspan='2'><b>Kunci

Publik</b></td>

</tr> <tr>

<td

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>

</tr>

<td colspan='2'><b>Kunci

Privat</b></td>

</tr> <tr>

<td>x</td><td>: <input 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>

</tr> </tr>

<td colspan='2'><b>Bilangan Acak Pengirim (k)</b></td>

</tr> <tr>

<td>k</td><td>: <input 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>

(24)

<td width='150' valign='top'>PlainText</td>

<td>

<form

enctype="multipart/form-data" method='POST'

action='enkripsi.php'>

<td width='150'

valign='top'>ChipperText</td>

<td>

<form

enctype="multipart/form-data" method='POST'

action='dekripsi.php'>

<td width="50"><input type="text" name="pw" rows="10" cols="60"><? echo stripslashes($pw); ?></td>

</tr>

</tr>

</table>

(25)

<td><button

type="submit" name="enkey" value="Encrypt

it">Encrypt</button></td>

<td><input type="text" name="cipherkey" size="79" value="<?= $chippertextkey ?>" "/t"></td>

<td><button type="submit" name="dekey" value="Decrypt it">Decrypt</button></td>

<td><input type="text" 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"

(26)

<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> </table> </form>

</p>

</div><a class="chosen-single" tabindex="-1"> <tr id="row-frm-text">

<td style="vertical-align:top;"> <div style="padding-top: 3px;">

</body> </html>

Elgamal.php

<?php

class elgamal{

public static $p,$g,$x,$y,$k;

public function __construct($p,$g,$x,$y,$k){ $this->p = $p;$this->g = $g;

$this->x = $x;$this->y = $y; $this->k = $k;

}

public function _key($batas){

$this->p = $this->_p($batas); $this->g = $this->_g();

$this->x = $this->_x();

$this->y = $this->_y($batas); $this->k = $this->_k();

}

private function _p($batas){

(27)

return $this->_p($batas); }

}

private function _g(){

return rand(1,$this->p - 1); }

private function _x(){

return rand(1,$this->p - 1); }

private function _y($batas){

return

$this->_rekursifMod($this->g,$this->x,$this->p);

}

private function _k(){

return rand(1,$this->p - 2); }

public function _rekursifMod($basis,$pangkat,$mod){ if ($pangkat <= 2)

return ((pow($basis,$pangkat)) % $mod); else{

$s = $pangkat % 2; if ($s == 0){

$b = $pangkat / 2; $b1 = $b; $b2 = $b; }

else{

$b = floor($pangkat/2); $b1 = $b; $b2 = $b + 1; }

return

((($this->_rekursifMod($basis,$b1,$mod)) *

($this->_rekursifMod($basis,$b2,$mod))) % $mod); }

}

(28)

$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; $ascii .= $b;

}

return $this->_toText($ascii); }

private function _toAscii($text){ $ascii = "";

for ($i=0;$i<(strlen($text));$i++){ $char = substr($text,$i,1); $a = ord($char);

if (strlen($a)==1) $a = "00".$a; if (strlen($a)==2) $a = "0".$a;

private function _toText($ascii){ $text = "";

(29)

$text .= chr($bil); }

return $text; }

} ?>

File-processor.php

<?php

require 'nor1.class.php'; require 'norctr.class.php';

$timer = microtime(true);

$pt = empty($_POST['pt']) ? '' : $_POST['pt'];

$cipher = empty($_POST['cipher']) ? '' :

$_POST['cipher'];

$plain = empty($_POST['plain']) ? '' :

$_POST['plain'];

$target_dir = "upload/"; $aksi=$_POST['aksi']; $pw=$_POST['pw'];

$targetFile = basename( $_FILES["fName"]["name"]); //option aksi

if($aksi=='enc'){

if (move_uploaded_file($_FILES["fName"]["tmp_name"],

$target_dir.$targetFile)) { $success=true;

/*---*/

$fh = fopen($target_dir.$targetFile,

'r');//membuka file hasil upload

$pt = fread($fh, 2097152); fclose($fh);

$encr = rtrim($_POST["fName"]) ?

$cipher : FEALCtr::encrypt($pt, $pw, 256) ;

$fp = fopen($target_dir.$targetFile,

'wb');//menimpa file hasil upload dengan file hasil enkripsi

fwrite($fp,$encr); fclose($fp);

(30)

$success=false; }

}

else if($aksi='dec'){

if(move_uploaded_file($_FILES["fName"]["tmp_name"], $target_dir.'/'.$targetFile)){

/*---*/

$fh = fopen($target_dir.'/'.$targetFile, 'r');

$cipher = fread($fh, 2097152); fclose($fh);

$decr = rtrim($_POST['decr']) ? $plain : FEALCtr::decrypt($cipher, $pw, 256);

$fp = fopen($target_dir.$targetFile,

'wb');

fwrite($fp,$decr); fclose($fp);

} }

?> <html>

<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>

Gambar

TABEL ASCII 0 - 255

Referensi

Dokumen terkait

[r]

Aktiviti/Laporan Aktiviti Pelajar dan Borang Tuntutan Kewangan perlu di hantar kepada Pegawai Penyelaras yang

Dari diagram aktivitas belajar siklus I dan siklus II dapat dijelaskan mengenai peningkatan aktivitas belajar peserta didik, perolehan data pada siklus I indikator pertama

Kelompok Ternak Itik Putri Mandiri merupakan salah satu kelompok peternakan bergerak dalam bidang produksi telur itik konsumsi yang melakukan kegiatan pemeliharaan itik Karawang yang

[r]

______ murid dapat mencapai objektif yang ditetapkan dan ______ murid yang tidak mencapai objektif akan diberi bimbingan khas dalam sesi akan datang...

Tujuan dari paper ini adalah untuk memperlihatkan bagaimana pemimpin NU, Abdurrahman Wahid (selanjutnya ditulis Gus Dur), menggunakan wacana dialog antaragama sebagai: pertama

Peran dan Fungsi Penilai Kerugian (Loss Adjuster) Dalam Penyelesaian Klaim Asuransi Kerugian Berdasarkan Undang-Undang Nomor 40 Tahun 2014 Tentang Perasuransian. Fakultas Hukum