Click here to load reader
Upload
sand-dhyie
View
739
Download
87
Embed Size (px)
DESCRIPTION
Kriptografi adalah ilmu yang mempelajari kerahasiaan berita, dalam hal ini adalahkerahasiaan sebaris huruf atau lebih yang di rahasiakan dengan melakukan Enkripsi denganmenggunakan kunci tertentu
Citation preview
1 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
KRIPTOGRAFI
Cipher Substitusi Homofonik dengan PHP
Disusun oleh:
Sandhi Yani Zulqifli 24010310141038
PROGRAM STUDI TEKNIK INFORMATIKA – R2
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA ILMU PENGETAHUAN ALAM
UNIVERSITAS DIPONEGORO
SEMARANG
2012
2 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
DAFTAR ISI
DAFTAR ISI …………………………………………………………………………… 2
BAB I PENDAHULUAN ……………………………………………………………… 3
Rumusan Masalah ……………………………………………………………… 4
Tujuan ………………………………………………………………………….. 4
BAB II PEMBAHASAN ………………………………………………………………. 5
BAB III PENUTUP …………………………………………………………………… 15
3 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
BAB I PENDAHULUAN
Kriptografi adalah ilmu yang mempelajari kerahasiaan berita, dalam hal ini adalah
kerahasiaan sebaris huruf atau lebih yang di rahasiakan dengan melakukan Enkripsi dengan
menggunakan kunci tertentu, kunci ini dapat bermacam-macam bentuk, misalkan kata SAYA
bila di enkripsi dapat menjadi BHWZ atau SDJK menyesuaikan dengan kunci apa yang di
gunakan dalam melakukan enkripsi tersebut. Selain metode Enkripsi ada juga kebalikannya
yaitu Dekripsi, Dekripsi ini adalah kebalikan dari Enkripsi yaitu merubah kata / huruf /
kalimat yang telah di kodekan menjadi sebuah kata / huruf / kalimat yang readable ( mudah
di baca ).
Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan
informasi yaitu :
Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari
siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas
informasi yang telah disandi.
Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak
sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi
manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan,
dan pensubsitusian data lain kedalam data yang sebenarnya.
Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan
sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling
memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi
keaslian, isi datanya, waktu pengiriman, dan lain-lain.
Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya
penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang
mengirimkan/membuat.
4 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
Rumusan Masalah o Bagaimana melakukan Enkripsi dan Dekripsi dengan menggunakan Bahasa
PHP ?
o Bagaimana melakukan Enkripsi dan Dekripsi homofon dengan bahasa PHP ?
Tujuan o Membuat sebuah Program Enkripsi / Dekripsi dengan menggunakan Bahasa
PHP.
o Enkripsi / Dekripsi dilakukan dengan menggunakan Cipher Substitusi
Homofonik.
5 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
BAB II
PEMBAHASAN
Cipher Substitusi Homofonik bisa dibuat dengan menggunakan bahasa PHP, kali ini
kita akan membuat sebuah program kecil berbasis WEB yang mampu melakukan
fungsi Enkripsi dan Dekripsi dengan menggunakan metode Cipher Substitusi
Homofonik.
Tampilan Program
6 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
Source Code
Pada program ini saya menggunakan 3 file yang berbeda :
1. Index.php ( sebagai halaman depan dari program/aplikasi )
2. Style.css ( untuk tampilan dari program yang dibuat )
3. SubstitusiHomofon.php ( ini adalah file yang di panggil ketika submit di
tekan, berisi fungsi-fungsi yang dapat di jalankan.
1. Index.php
7 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
Penjelasana perbagian :
Di bawah adalah bagian dari PHP yang digunakan untuk menampung nilai yang kita
masukkan pada bagian kolom textarea yang merupkan Cipherteks ataupun Plainteks.
$_POST [‘text’] = digunakan untuk menangkap nilai yang kita masukkan pada kolom
teksarea.
<?php
include dirname(__FILE__).'/SubstitusiHomofon.php';
/** Variabel penampung hasil deksripsi/enkripsi */
$hasil_text = null; pertama variable $hasil_text kita isi null
if(isset($_POST['text'])&&isset($_POST['submit'])){ jika nilai text masuk dan kita klik
submit maka variable $text di isi dengan nilai yang dimasukkan
$text = $_POST['text'];
/** Enkripsi plainteks ke chiperteks */
if($_POST['submit']=="Enkripsi"){ ketika klik submit dan name = Enkripsi
$hasil_text = enkripsi($text); $hasil_text diisi dengan hasil dari fungsi enkripsi text
}
8 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
/** Dekripsi chiperteks ke plainteks */
else if($_POST['submit']=='Dekripsi'){ ketika klik submit dan name = Enkripsi
$hasil_text = dekripsi($text); $hasil_text diisi dengan hasil dari fungsi dekripsi text
}
}
else{
$text = null;
}
?>
Bagian tampilan atau HTML Pada bagian ini anda akan menemukan code <?php echo $hasil_text;?>, ini adalah code php
yang digunakan untuk mengambil nilai dari teks yang di masukkan pada kolom textarea. <html>
<link href="style.css" rel="stylesheet" type="text/css"/>
<title>Substitusi Homofon by Sandhi</title>
<body>
<p align="center" style="font-size:28px">Tugas Kriptografi</p>
<table width="600px" border="0" align="center">
<tr>
<td>
<table align="left" border="0">
<tr>
<td>Nama</td>
<td>:</td>
<td>Sandhi Yani Z</td>
</tr>
<tr>
<td>NIM</td>
<td>:</td>
9 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
<td>24010310141038</td>
</tr>
</table>
</td>
</tr>
</table>
<table width="500px" border="1" align="center">
<form action="index.php" method="post">
<tr><td align="center" height="40px" style="font-size:26px; background-color:#333"><span
style="color:#FFF">Substitusi Homofon</span></td></tr>
<tr><td align="center"></td></tr>
<tr><td align="center" style="background-color:#333"><span style="color:#FFF"><b>Hasil
Enkripsi / Dekripsi</b></span></td></tr>
<tr><td width="300"><textarea style="background-color:#CCC;" readonly="true" rows="5"
cols="70" > <?php echo $hasil_text;?></textarea></td></tr>
<tr><td align="center" style="background-color:#333"><span
style="color:#FFF"><b>Tuliskan Plaintext / Chipertext di bawah ini</b></span></td></tr>
<tr><td width="300"><textarea name="text" rows="5" cols="70" ><?php echo
$text;?></textarea></td></tr>
<tr align="center" ><td colspan="2" border="0"><input class="input" type="submit"
value="Enkripsi" name="submit"/> ||| <input class="input" type="submit" value="Dekripsi"
name="submit"/></td></tr>
</form>
</table>
<div style="height:10px"></div>
<p align="center"><a href="http://www.sandhiyaniz.com">Home</a> | <a
href="http://id.wikipedia.org/wiki/Kriptografi">Kriptografi</a> | <a
href="http://id.wikipedia.org/wiki/Homofon">Homofon</a> | <a
href="http://id.wikipedia.org/wiki/Enkripsi">Enkripsi/Dekripsi</a></br></br>
10 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
<a href="http://www.if.undip.ac.id/">INFORMATIKA</a> </br> <a
href="http://undip.ac.id/">UNDIP</a></p>
</br><p align="center" >Copyright © 2012 by <a
href="http://www.sandhiyaniz.com">sandhiyaniz.com</a>. All Rights Reserved.</p>
</body>
</html>
2. SubstitusiHomofon.php
Ini adalah file PHP yang berisi fungsi-fungsi yang digunakan saat kita memilih Enkripsi atau
Dekripsi pada saat melakukan pengkodean.
11 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
di bawah ini adalah bagian dari table array yang kita gunakan sebagai kunci <?php
function getTable(){
/** Tabel plainteks ke chiperteks */
$tabel = array("A"=>array("BU","CP","AV","AH","BT","BS","CQ"),
"B"=>array("AT"),
"C"=>array("DL","BK","AU"),
"D"=>array("BV", "DY", "DM", "AI"),
"E"=>array("DK", "CO", "AW", "BL","AA", "CR", "BM", "CS","AF",
"AG", "BO","BN", "BE"),
"F"=>array("BW","CM","CN"),
"G"=>array("DN","BJ"),
"H"=>array("AS","CL","CK"),
"I"=>array("DJ","BI","AX","CJ","AB","BP","CU","CT"),
12 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
"J"=>array("BX"),
"K"=>array("DI"),
"L"=>array("AR", "BH", "CI", "AJ"),
"M"=>array("DH", "BG", "AY"),
"N"=>array("BY","DG","DF","CH","AC","BR","DU","DT"),
"O"=>array("DZ","BF","DX","AK","CG","BQ","DR"),
"P"=>array("BZ", "DE", "AZ"),
"Q"=>array("DD"),
"R"=>array("AQ","DC","DQ","AL","CE","CF","CV","DS"),
"S"=>array("AP","AN","AO","CD","DW","DV"),
"T"=>array("CB","DB","DP","CC","AD","CY","CW","CX","AE"),
"U"=>array("CA","AM","BA"),
"V"=>array("BB"),
"W"=>array("CZ"),
"X"=>array("BD"),
"Y"=>array("DO", "DA"),
"Z"=>array("BC"));
return $tabel;
}
Di bawah ini adalah bagian fungsi yang digunakan dalam melakukan Enkripsi
Plainteks
/** Fungsi yang digunakan untuk mengenkripsi plainteks */
function enkripsi($str){
/**Fungsi untuk menghilangkan spasi pada string */
$str = str_ireplace(' ','',$str);
/** Fungsi untuk merubah semua huruf menjadi huruf kapital */
$str = strtoupper($str);
/** Ambil jumlah huruf untuk pencacah */
$len = strlen($str);
/** Ambil pemetaan plainteks ke chiperteks pada tabel */
$tabel = getTable();
$chiper = '';
for($i=0;$i<$len;$i++){
13 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
/** Cek apakah huruf plainteks ada pada tabel di atas */
if(array_key_exists($str[$i], $tabel)){
/** Hitung jumlah kemungkinan chiperteks pada huruf*/
$c = count($tabel[$str[$i]]);
/** Ambil salah satu chiperteks dari huruf plainteks */
$chiper .= $tabel[$str[$i]][rand(0,$c-1)];
}
}
return $chiper;
}
Di bawah ini adalah bagian fungsi yang digunakan dalam melakukan Dekripsi
Chipertext
/** Fungsi yang digunakan untuk melakukan dekripsi pada chiperteks */
function dekripsi($chipertext){
/** Hitung panjang karakter yang ada pada chiperteks */
$len = strlen($chipertext);
/** Jika chiperteks berjumlah genap, maka dapat dilakukan dekripsi pada chiperteks */
if($len%2==0){
/** Ambil peta plainteks ke chiperteks pada tabel*/
$tabel = getTable();
$plaintext = '';
$i=0;
while($i<$len){
foreach($tabel as $tab=>$tabs){
/** cek apakah setiap 2 huruf chiperteks ada pada array di tabel ? jika ada berikan nilai index
*/
if(in_array($chipertext[$i].$chipertext[$i+1], $tabel[$tab])){$plaintext .= $tab;}
}
$i+=2;
}
}
14 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
Ini adalah fungsi yang berjalan atau di eksekusi jika keadaan di atas tidak terpenuhi
/** Jika chiperteks tidak berjumlah genap berarti chiperteks tidak dapat di dekripsi */
else{
$plaintext = 'Chipertext tidak lengkap';
}
return $plaintext;
}
3. Style.css Berikut adalah file yang berisi code untuk tampilan program.
@charset "utf-8";
/* CSS Document */
/*author : sandhi yani z*/
/*NIM : 24010310141038 */
a:link {color:#000000; text-decoration:none} /* unvisited link */
a:visited {color:#999;} /* visited link */
a:hover {color:#000; text-decoration:underline} /* mouse over link */
a:active {color:#000;} /* selected link */
.input {border: 1px solid #006; background:#FFF; height:40px; width:275px; font-size:16px;
text-align:center;}
.input:hover {
border: 1px solid #000;
background:#F0F0F0;
}
15 | K r i p t o g r a f i | c i p h e r s u b s t i t u s i h o m o f o n i k
BAB III PENUTUP
PHP dapat digunakan untuk membuat program yang menggunakan fungsi Enkripsi &
Dekripsi, kita telah melihat bagaimana program tersebut di buat dengan melihat perbagian
dan fungsi-fungsi yang ada pada program tersebut. Program tersebut menggunakan metode
cipher substitusi homofonik yang menggunakan pemetaan dari Plainteks ke Cipherteks, 1
huruf Plainteks mempunyai kunci 2 huruf di Cipherteks dan mempunyai beberapa
kemungkinan sesuai dengan presentasi kemunculan huruf tersebut dalam sebuah kalimat
yang akan di Enkripsi.
Di atas telah berhasil di buat sebuah program yang mampu melakukan fungsi Ekripsi
& Dekripsi dengan metode Cipher Substitusi Homofonik, dengan memanfaatkan table /
array yang telah di buat sebelumnya, program ini mampu mengenkripsi satu huruf ( Plainteks
) ke dalam 2 huruf ( Ciphertext ), sehingga jika kita memasukkan 5 huruf ( Plainteks ) maka
akan menghasilkan 10 huruf ( Cipherteks ) dengan rumus hasil = 2P ( 2 x huruf Plainteks ).
Untuk fungsi Dekripsi tidak dapat dilakukan jika jumlah Huruf adalah ganjil, hal ini
dikarenakan 2 huruf ( Cipherteks ) memetakan 1 huruf ( Plainteks ) atau one-to-one,
sedangkan dari Plainteks Cipherteks disebut hubungan one-to-many.
Dari program di atas masih ada kelemahan. Yaitu pada fungsi Dekripsi tidak adanya
Space diantara kata. Jadi jika kita ingin menDekripsi nilai dari sebuah deretan huruf hasil dari
dekripsi tersebut tidak akan memiliki Space.
Untuk melihat Live Demo dari program di atas dapat dilihat di sini :
http://www.sandhiyaniz.com/kripto