Chiper Subtitusi Homofonik, Menggunakan Bahasa Pemrograman PHP + Ajax
Seperti biasanya mahasiswa, dapet tugas dari dosen. Kebetulan matakuliah Kriptografi dengam materi subtitusi homofonik.
Namun kode ini masih kurang sempurna. Secara fungsionalitas si, udah berjalan baik di laptop saya. Tapi secara tampilan masih belum sempurna. Yaa, monggo bagi yang berminat silakan di utek-utek sendiri.
Sebenarnya saya juga berhasil dari hasil utek-utek berbagai sumber (akan disebutkan beberapa sumbernya nanti :D )
Oke langsung aja.
Namun kode ini masih kurang sempurna. Secara fungsionalitas si, udah berjalan baik di laptop saya. Tapi secara tampilan masih belum sempurna. Yaa, monggo bagi yang berminat silakan di utek-utek sendiri.
Sebenarnya saya juga berhasil dari hasil utek-utek berbagai sumber (akan disebutkan beberapa sumbernya nanti :D )
Oke langsung aja.
1. Pertama kita bikin dulu form, untuk input plaintext yang akan di enkripsi. Pada file ini saya beri nama "index.php". Berikut kode sumbernya :
<html>
<head>
<script
type="text/javascript">
function dekripsi(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera,
Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new
ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 &&
xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","dekripsiteks.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<p><b>Masukkan
Teks Yang akan di Dekripsi:</b></p>
<form>
First name: <input
type="text" onkeyup="dekripsi(this.value)"
size="20" />
</form>
<p>Hasil Dekripsi
(Plainteks) : <span id="txtHint"></span></p>
</body>
</html>
2. Baru kita bikin fungsi untuk melakukan enkripsi dari teks yang sudah kita input-kan pada form diatas. Kali ini saya beri nama "enkripsiteks.php". Berikut kode sumbernya :
<?php
$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"),
"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"));
$teks = $_GET['q'];
$teks = str_ireplace(' ','',$teks);
/** Rubah semua huruf
menjadi huruf kapital */
$teks = strtoupper($teks);
/** Ambil jumlah huruf
untuk pencacah */
$len = strlen($teks);
/** Ambil peta plainteks
ke chiperteks pada tabel */
$chiper = '';
for($i=0;$i<$len;$i++){
/** Cek apakah huruf plainteks ada pada tabel ? */
if(array_key_exists($teks[$i], $tabel)){
/** Hitung jumlah kemungkinan
chiperteks pada huruf*/
$c = count($tabel[$teks[$i]]);
/** Ambil salah satu chiperteks dari
huruf plainteks */
$chiper .=
$tabel[$teks[$i]][rand(0,$c-1)];
}
}
echo "$chiper";
?>
3. Ada gula ada semut. Ada enkripsi berarti ada dekripsi-nya juga. hehehe (ga nyambung).
Saatnya kita bermain-main di kode dekripsi. Kali ini saya beri nama "index2.php". File ini berisi form inputan chipertext yang akan di dekripsi. Cekidot :
<html>
<head>
<script
type="text/javascript">
function dekripsi(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera,
Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new
ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 &&
xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","dekripsiteks.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<p><b>Masukkan
Teks Yang akan di Dekripsi:</b></p>
<form>
First name: <input
type="text" onkeyup="dekripsi(this.value)"
size="20" />
</form>
<p>Hasil Dekripsi
(Plainteks) : <span id="txtHint"></span></p>
</body>
</html>
4. Barulah kita bikin fungsi dari dekripsi teks, yang sudah di-inputkan di atas. Kali ini file saya beri nama "dekripsiteks.php"
<?php
$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"),
"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"));
$chipertext = $_GET['q'];
$len =
strlen($chipertext);
/** Jika chiperteks
berjumlah genap, maka dapat dilakukan dekripsi pada chiperteks */
if($len%2==0){
/** plaintext awal bernilai null */
$plaintext = '';
$i=0;
while($i<$len){
foreach($tabel as $tab=>$tabs){
/** jika setiap 2
chipertext ada nilai-nya dalam tabel, maka nilai tersebut diberikan ke variable
$plaintext */
if(in_array($chipertext[$i].$chipertext[$i+1],
$tabel[$tab])){$plaintext .= $tab;}
}
$i+=2;
}
}
/** Jika chiperteks tidak
berjumlah genap berarti chiperteks tidak dapat di dekripsi */
else{
$plaintext = 'Periksa kembali Chipertext-nya';
}
echo "$plaintext";
?>
Untuk yang mau ngotak-ngatik, bisa dicoba untuk form inputan teks (baik dekripsi atau enkripsi) berada pada satu halaman. Lalu terdapat 2 tombol submit, yaitu tombol "enkripsi" dan tombol "dekripsi". So, tentu saja masing2 tombol mengarahkan ke fungsi yang berbeda.
Selamat mencoba, semoga bermanfaat.
Jazakumullohu Khoiro.
barokallohu fiikum.
Wassalam.
Referensi :
http://satupersen.blogspot.com/2012/08/substitusi-homofon-dengan-php.html
http://www.w3schools.com/php/
Selamat mencoba, semoga bermanfaat.
Jazakumullohu Khoiro.
barokallohu fiikum.
Wassalam.
Referensi :
http://satupersen.blogspot.com/2012/08/substitusi-homofon-dengan-php.html
http://www.w3schools.com/php/
354 ya mas.
BalasHapusmas boleh minta source code untuk program diatas? kirim ke nandadheanti@gmail.com
BalasHapusmakasi mas