kripto: Added tugas 1.
Signed-off-by: Willy Sudiarto Raharjo <willysr@gmail.com>
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
if ($_SERVER['REQUEST_METHOD'] == "POST") // Cek apakah halaman diload melalui metode POST?
|
||||
{
|
||||
include "functions.php"; // Untuk fungsi produce_error
|
||||
|
||||
$inputPlainText = strip_tags($_POST['plaintext']);
|
||||
if (empty($inputPlainText)) // Cek apakah ada plaintext?
|
||||
{
|
||||
produce_error("Input plaintext masih kosong");
|
||||
return;
|
||||
}
|
||||
|
||||
$inputKey = strip_tags($_POST['key']);
|
||||
if (empty($inputKey)) // Cek apakah ada kunci?
|
||||
{
|
||||
produce_error("Input kunci masih kosong");
|
||||
return;
|
||||
}
|
||||
$plainTextLength = strlen($inputPlainText); // ambil panjang karakter plaintext
|
||||
$keyLength = strlen($inputKey); // ambil panjang kunci
|
||||
|
||||
if (preg_match("/[^a-zA-Z]/",$inputPlainText) || preg_match("/[^a-zA-Z]/",$inputKey)) // Jika ada karakter selain alphabet
|
||||
{
|
||||
produce_error("Terdapat karakter selain alphabet");
|
||||
return;
|
||||
}
|
||||
// Tampilkan struktur dasar HTML
|
||||
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3c.org/TR/html4/loose.dtd\">\n";
|
||||
echo "<html>\n";
|
||||
echo "<head>\n";
|
||||
echo "<title>Willy Sudiarto Raharjo - Tugas 2 Keamanan Komputer - Semester Gasal 2016/2017</title>\n";
|
||||
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n";
|
||||
echo "<meta name=\"author\" content=\"Willy Sudiarto Raharjo\">\n";
|
||||
echo "<style type=\"text/css\">\n";
|
||||
echo "@import url(index.css);\n";
|
||||
echo "</style>\n";
|
||||
echo "</head>\n";
|
||||
echo "<body>\n";
|
||||
echo "<div class=\"Result-Title\">\n";
|
||||
echo "Hasil Enkripsi: \n";
|
||||
echo "</div>\n";
|
||||
$resultingCipherText = "";
|
||||
echo "plaintext: $inputPlainText<br/>";
|
||||
echo "kunci: $inputKey<br/>";
|
||||
/*
|
||||
/* Pergeseran sebanyak panjang kunci
|
||||
*/
|
||||
for ($i = 0; $i < $keyLength; $i++)
|
||||
{
|
||||
/*
|
||||
/* Jika loop pertama, gunakan input awal
|
||||
/* Jika bukan loop pertama, gunakan hasil perhitungan sebelumnya
|
||||
*/
|
||||
if ($i == 0)
|
||||
{
|
||||
$originalPlainText = $inputPlainText;
|
||||
}
|
||||
else
|
||||
{
|
||||
$originalPlainText = $resultingCipherText;
|
||||
}
|
||||
|
||||
/*
|
||||
/* Jumlah pergeseran dari karakter ke-i dari kunci
|
||||
/* Hasilnya dikurangi 97 karena karakter a kode ASCInya 97
|
||||
/* Kita ingin a = 0, b = 1, c = 2, dst
|
||||
*/
|
||||
$numberOfMovement = ord($inputKey[$i]) - 97;
|
||||
|
||||
echo "Karakter ke-" . ($i+1) . " kunci - ";
|
||||
|
||||
/*
|
||||
/* Pergeseran sebanyak panjang plaintext
|
||||
*/
|
||||
for ($j = 0; $j < $plainTextLength; $j++)
|
||||
{
|
||||
/*
|
||||
/* Algoritma:
|
||||
/* 1. Ambil kode ASCII dari teks menggunakan fungsi ord
|
||||
/* 2. Konversi ke bilangan 0 - 25 dengan mengurangi 97
|
||||
/* 3. Tambahkan jumlah pergeseran dari karakter ke-i dari kunci
|
||||
/* 4. Pastikan hasilnya diantara 0-25 dengan cara modulus 26
|
||||
/* 5. Kembalikan hasilnya ke karakter ASCII dengan fungsi chr
|
||||
*/
|
||||
$originalPlainText[$j] = chr((((ord($originalPlainText[$j]) - 97) + $numberOfMovement) % 26) + 97);
|
||||
echo $originalPlainText[$j];
|
||||
}
|
||||
echo "<br/>\n";
|
||||
/*
|
||||
/* Simpan hasilnya ke variabel resultingCipherText untuk nilai awal loop berikutnya
|
||||
*/
|
||||
$resultingCipherText = $originalPlainText;
|
||||
}
|
||||
echo "ciphertext: <strong>$resultingCipherText</strong>";
|
||||
echo "<div class=\"Link\">\n";
|
||||
echo ":: <a href=\"index.php\" class=\"url\">Kembali ke halaman input</a> ::\n";
|
||||
echo "</div>\n";
|
||||
echo "<div class=\"Info\">\n";
|
||||
echo "Willy Sudiarto Raharjo\n";
|
||||
echo "</div>\n";
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
}
|
||||
else // Jika ternyata diakses melalui metode GET (kemungkinan besar pemanggilan langsung)
|
||||
{
|
||||
header("location:index.php"); // Redirect ke halaman input
|
||||
exit; // hanya memastikan bahwa tidak menjalankan perintah lain
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user