• Tidak ada hasil yang ditemukan

LAMPIRAN A: Listing Program

N/A
N/A
Protected

Academic year: 2019

Membagikan "LAMPIRAN A: Listing Program"

Copied!
16
0
0

Teks penuh

(1)

Siregar, 2011.

Perbandingan Algoritma Rsa Dan Triple Des Dalam Proses Enkripsi

Dan Dekripsi File Teks

. Medan: Universitas Sumatera Utara

Widanarto, P. 2005. Analisis

Collision

Pada Enkripsi MD5. Institut Teknologi

Bandung.

LAMPIRAN A: Listing Program

//NAMA FILE : rsa.class.php

<?

class RSA{

public function generate_keys ($p, $q, $show_debug=0){ $n = bcmul($p, $q);

//m (hitung D dan E)

$m = bcmul(bcsub($p, 1), bcsub($q, 1));

// Public key E

$e = $this->findE($m);

// Private key D

$d = $this->extend($e,$m);

$keys = array ($n, $e, $d);

if ($show_debug) {

echo "P = $p<br>Q = $q<br><b>N = $n</b>

modulo<br>M = $m<br><b>E = $e</b> public key<br><b>D = $d</b> -private key<p>";

(2)

return $keys; }

private function extend ($Ee,$Em) { $u1 = '1';

$t1 = bcsub($u1, bcmul($qq, $v1)); $t2 = bcsub($u2, bcmul($qq, $v2)); $t3 = bcsub($u3, bcmul($qq, $v3)); $u1 = $v1;

$inverse = bcadd($vv, $Em); } else {

$inverse = $vv; }

return $inverse; }

private function GCD($e,$m) { $y = $e;

$x = $m;

while (bccomp($y, 0) != 0) { // modulus function

$w = bcsub($x, bcmul($y, bcdiv($x, $y, 0)));; $x = $y;

(3)

return $x; }

private function findE($m){ $e = '3';

if(bccomp($this->GCD($e, $m), '1') != 0){ $e = '5';

$step = '2';

while(bccomp($this->GCD($e, $m), '1') != 0){ $e = bcadd($e, $step);

if($step == '2'){ $step = '4'; }else{

$step = '2'; }

} }

return $e; }

/*

* ENCRYPT function returns * X = M^E (mod N)

*/

public function encrypt ($m, $e, $n, $s=3) { $coded = '';

$max = strlen($m); $packets = ceil($max/$s);

for($i=0; $i<$packets; $i++){

$packet = substr($m, $i*$s, $s); $code = '0';

for($j=0; $j<$s; $j++){

$code = bcadd($code, bcmul(ord($packet[$j]), bcpow('256',$j)));

}

$code = bcpowmod($code, $e, $n); $coded .= $code.' ';

}

(4)

}

/*

ENCRYPT function returns M = X^D (mod N)

*/

public function decrypt ($c, $d, $n) { $coded = split(' ', $c);

$message = '';

$max = count($coded);

for($i=0; $i<$max; $i++){

$code = bcpowmod($coded[$i], $d, $n);

while(bccomp($code, '0') != 0){ $ascii = bcmod($code, '256'); $code = bcdiv($code, '256', 0); $message .= chr($ascii);

} }

return $message; }

// Digital Signature

public function sign($message, $d, $n){ $messageDigest = md5($message);

$signature = $this->encrypt($messageDigest, $d, $n, 3); return $signature;

}

public function prove($message, $signature, $e, $n){ $messageDigest = $this->decrypt($signature, $e, $n); if($messageDigest == md5($message)){

return true; }else{

return false; }

}

public function signFile($file, $d, $n){ $messageDigest = md5_file($file);

$signature = $this->encrypt($messageDigest, $d, $n, 3); return $signature;

(5)

public function proveFile($file, $signature, $e, $n){ $messageDigest = $this->decrypt($signature, $e, $n); if($messageDigest == md5_file($file)){

return true; }else{

return false; }

} } ?>

//NAMA FILE: sieve.php

<?php

ini_set('max_execution_time', 300); ini_set('memory_limit', '-1');

function sieve($n) {

$limit = intval(sqrt($n));

$A = array_fill(0, $n, true);

for ($i = 2; $i <= $limit; $i++) {

if ($A[$i - 1]) {

for ($j = $i * $i; $j <= $n; $j += $i) {

$A[$j - 1] = false;

}

}

}

$result = array();

foreach ($A as $i => $is_prime) {

if ($is_prime) {

(6)

}

}

return $result;

}

?>

//NAMA FILE: kunci.php

<?

session_start();

//cek apakah user sudah login if(!isset($_SESSION['userid'])){

echo "<script>alert('anda belum login')

location.replace('index.php')</script>";//jika belum login jangan lanjut..

} ?> <?

include('koneksi.php'); $userid=$_SESSION['userid'];

$query = "SELECT * FROM kunci WHERE userid='$userid' "; $result = mysql_query($query) or die(mysql_error());

if (mysql_num_rows($result)==0 ) {

if(isset($_POST['submitpq'])){

include("sieve.php"); $input = sieve(1000000);

$rand_keys = array_rand($input, 2); //if(isset($_POST['submitted'])){ }

(7)

<title>Algoritma RSA</title> </head>

<body>

<table border="0" cellspacing="0" cellpadding="2"> <form action="<? $PHPSELF;?>" method="post">

<tr>

<td width="12%">Masukkan p</td>

<td width="25%">: <input type="text" name="p" value="<?=$input[$rand_keys[1]];?>" ></td>

<td colspan="2">&nbsp;<?= $msg_p_noprima;?></td>

</tr> <tr>

<td>Masukkan q</td>

<td>: <input type="text" name="q" value="<?=$input[$rand_keys[0]];?>" ></td>

<td colspan="2">&nbsp;<?= $msg_q_noprima;?></td>

</tr> <tr>

<td>&nbsp;</td><td>&nbsp;&nbsp;<input type="submit" name="submitpq" value="Generate P dan Q"></td>

<td><input type="submit" name="buatkunci" value="Generate Key"></td>

</tr>

echo"<i>Keys:</i><br />";

$keys = $RSA->generate_keys ($p, $q, 1);

?> <br>

(8)

<?}?>

<form action='index.php?page=simpankunci' method='POST'> <input type='hidden' name='userid'

value='<?=$_SESSION['userid'];?>'/>

<input type='hidden' name='n' value='<?=$keys[0];?>'/> <input type='hidden' name='e' value='<?=$keys[2];?>' /> <input type='hidden' name='d' value='<?=$keys[1];?>'/>

<p><input type='submit' value='Simpan Kunci' /><input type='hidden' value='1' name='submitted' />

</form>

</body> </html> <? } else {

echo " Anda telah membuat Pasangan Kunci";

echo "<br><br><a href=\"index.php?page=hapuskunci&id=$userid\">HAPUS PASANGAN KUNCI LAMA</a>";

}

//NAMA FILE: compose.php

<?

session_start();

include('koneksi.php');

//cek apakah user sudah login if(!isset($_SESSION['userid'])){

echo "<script>alert('anda belum login')

location.replace('index.php')</script>";//jika belum login jangan lanjut..

}

if (isset($_POST['sig'])) {

(9)

$result = mysql_query("SELECT n,e FROM kunci WHERE userid='$userid'");

if (!$result) {

echo 'Could not run query: ' . mysql_error(); exit;

}

$row = mysql_fetch_row($result);

$n=$row[0]; $e=$row[1];

include('rsa.class.php'); $RSA = new RSA();

$message=$_POST['message'];

$signature = $RSA->sign($message, $e, $n);

?>

<form action="index.php?page=kirim" method="post" class="niceform">

<fieldset> <dl>

<dt><label for="email">To:</label></dt> <dd><input type="hidden" name="to" id="" size="54" value="<?=$_POST['to'];?>"/><?=$_POST['to'];?></dd>

</dl> <dl>

<dt><label for="password">Subject:</label></dt>

<dd><input type="hidden" name="subject" id="" size="54" value="<?=$_POST['subject'];?>"

/><?=$_POST['subject'];?></dd> </dl>

<dl>

<dt><label for="comments">Isi E-Mail</label></dt>

<dd><input type="hidden" name="isiemail" value="<?=$_POST['message'];?>"><?=$_POST['message'];?></dd>

</dl>

(10)

<dd><input type="hidden" name="signature" value="<?=$signature;?>"><?=$signature;?></dd>

<input type="hidden" name="userid" value="<?=$_SESSION['userid'];?>">

</dl>

<dl class="submit">

<input type="submit" name="submit" id="submit" value="Submit" />

</dl>

<dl class="submit">

<input type="submit" name="batal" id="batal" value="Batal" />

</dl>

</fieldset>

</form>

<?

}

elseif (isset($_POST['submit'])) {

echo $_POST['subject'];

}

else{ ?>

<form action="" method="post" class="niceform">

<fieldset> <dl>

<dt><label for="email">To:</label></dt> <dd><input type="text" name="to" id="" size="54" /></dd>

(11)

<dt><label for="password">Subject:</label></dt>

<dd><input type="text" name="subject" id="" size="54" /></dd>

</dl>

<dl>

<dt><label for="comments">Isi E-Mail</label></dt>

<dd><textarea name="message" id="comments" rows="5" cols="36"></textarea></dd>

</dl>

<dl class="submit">

<input type="submit" name="submit" id="submit" value="Submit" />

</dl>

<dl class="submit">

<input type="submit" name="sig" id="sig" value="Tambahkan Signature" />

</dl>

</fieldset>

</form>

<?}?>

//NAMA FILE: sign.php <?

session_start();

include('koneksi.php');

//cek apakah user sudah login if(!isset($_SESSION['userid'])){

echo "<script>alert('anda belum login')

location.replace('index.php')</script>";//jika belum login jangan lanjut..

(12)

if(isset($_POST['submit'])){ include('rsa.class.php'); $RSA = new RSA();

$message=$_POST['pesan']; $n=$_POST['n'];

$e=$_POST['e'];

$hash=md5($message);

$signature = $RSA->sign($message, $e, $n);

} ?>

<table align="left" border="0" cellspacing="0" cellpadding="2"> <form action="<? $PHPSELF;?>" method="post">

<tr>

<td width="12%">e</td>

<td width="25%">: <input type="text" name="e" ></td> </tr>

<tr>

<td>n</td>

<td>: <input type="text" name="n" ></td> </tr>

<tr>

<td>Pesan</td> <td>

<textarea name="pesan" rows="5" cols="25" > </textarea>

</td> </tr> <tr>

<td>&nbsp;</td><td>&nbsp;&nbsp;<input type="submit" name="submit" value="Submit"></td>

</tr>

</form> </table>

<br> <br> <br>

(13)

<br> <br>

SIGNATURE: <?echo $signature;?> <br>

//NAMA FILE: verifikasi.php

<?

session_start();

include('koneksi.php'); include('rsa.class.php');

//cek apakah user sudah login if(!isset($_SESSION['userid'])){

echo "<script>alert('anda belum login')

location.replace('index.php')</script>";//jika belum login jangan lanjut..

}

$userid=$_SESSION['userid'];

$RSA = new RSA();

if (isset($_POST['submit'])) { $pesan="$_POST[pesan]";

$pesan=trim($pesan); $sig="$_POST[sig]"; $sig=trim($sig); $n="$_POST[n]"; $d="$_POST[d]";

$verify=($RSA->prove($pesan, $sig, $d, $n)? "Benar" : "Salah"); }

$id=$_GET['id'];

$result = mysql_query("SELECT n,d FROM `kunci` where userid='$userid' ") or trigger_error(mysql_error());

$row = mysql_fetch_array($result);

(14)

$result = mysql_query("SELECT * FROM `pesan` where idpesan='$id' ") or trigger_error(mysql_error());

$row2 = mysql_fetch_array($result);

?>

<table align="left" border="0" cellspacing="0" cellpadding="2"> <form action="<? $PHPSELF;?>" method="post">

<tr>

<td width="12%">D</td>

<td width="25%">: <input type="text" name="d" value="<?=$d;?>" ></td> </tr>

<tr>

<td>N</td>

<td>: <input type="text" name="n" value="<?=$n;?>"></td> </tr>

<tr>

<td>Pesan</td> <td>

<textarea name="pesan" rows="5" cols="25" ><?=$row2['4'];?> </textarea>

<textarea name="sig" rows="5" cols="25" ><?=$row2['5'];?> </textarea>

</td> </tr> <tr>

<td>&nbsp;</td><td>&nbsp;&nbsp;<input type="submit" name="submit" value="Submit"></td>

</tr> </form> </table> <br>

VERIFIKASI: <?echo $verify;?> <br>

//NAMA FILE: verify.php

<?

(15)

include('koneksi.php');

//cek apakah user sudah login if(!isset($_SESSION['userid'])){

echo "<script>alert('anda belum login')

location.replace('index.php')</script>";//jika belum login jangan lanjut..

}

//$signature = $RSA->sign($message, $e, $n);

$verify=($RSA->prove($pesan, $sig, $d, $n)? "Benar" : "Salah"); }

?>

<table align="left" border="0" cellspacing="0" cellpadding="2"> <form action="<? $PHPSELF;?>" method="post">

<tr>

<td width="12%">d</td>

<td width="25%">: <input type="text" name="d" value='<?=$d;?>' ></td> </tr>

<tr>

<td>n</td>

<td>: <input type="text" name="n" value='<?=$n;?>' ></td> </tr>

<tr>

<td>Pesan</td> <td>

<textarea name="pesan" rows="5" cols="25" ><?=$pesan;?> </textarea>

(16)

</textarea> </td>

</tr> <tr>

<td>&nbsp;</td><td>&nbsp;&nbsp;<input type="submit" name="submit" value="Submit"></td>

</tr> </form> </table> <br> <br>

Referensi

Dokumen terkait

Indonesia sebagai penghasil minyak setengah jadi kelapa sawit (CPO) dengan jumlah yang sangat besar. Produk CPO Indonesia menjadi komoditas unggulan Indonesia yang memenuhi

Dapatan analisis MANOVA menunjukkan terdapat perbezaan yang signifikan dalam tahap kecerdasan emosi, kecerdasan spiritual, perapatan dengan ibu bapa, perapatan dengan rakan sebaya,

Menyatakan dengan sesungguhnya bahwa penulisan hukum (skripsi) berjudul : ANALISIS KETERANGAN SAKSI VERBALISAN SEBAGAI AKIBAT PENCABUTAN BERITA ACARA PEMERIKSAAN

Skripsi ini juga mencakup beberapa fitur baru untuk Services Binusmaya yang terletak pada bagian Home dari Binusmaya versi 3 yaitu fitur Most Visited Services , yaitu

Berdasarkan penjelasan diatas dapat disimpulkan dari hasil wawancara anggota bahwa upaya pengurus dalam mensejahterakan anggota baik dari segi, informasi, pelayanan,

Sarana hukum yang dapat dipergunakan untuk mempercepat penyelesaiaan masalah kredit macet perbankan melalui pelaksanaan pasal 1178 ayat (2) KUH Perdata Kreditur

Karate adalah seni beladiri menggunakan tangan kosong dimana tangan dan kaki dilatih dengan sedemikian rupa secara sistematis sehingga serangan secara tiba-tiba

Satriadi dan Widada (2004) menambahkan bahwa sumber-sumber material tersuspensi yang berasal dari aliran sungai berupa hasil pelapukan dari bahan organik, material