Mengenkripsi Bahasa Dengan PHP
Enkripsi sebenarnya bertujuan untuk mengaburkan sebuah data sehingga informasi atau data yang diterima hanya dapat dibaca oleh penerima yang mengerti atau memiliki kunci untuk membukan enkripsi
Dalam berkomunikasi baik itu secara lisan maupun tulisan sebenarnya kita dapat mengenkripsi bahasa yang kita gunakan dengan teknik seperti enkripsi transposisi atau subtitusi, tetapi dalam tutorial php kali ini saya akan mengkombinasikan teknik enkripsi yang mengkombinasikan keduanya yaitu transposisi dan subtitusi. Saya akan mengubah posisi sebuah kata kemudian menambahkan kata tertentu didalamnya
Sebagai contoh misal ada sebuah kata “makan” maka saya akan mengubah posisi pemanggilannya serta menambahkan huruf tertentu kedalamnya, kata “makan” dirubah jadi “kan”+si”ma” sehingga menjadi kata baru yaitu “kansima”.
Untuk mengimplementasikan contoh kasus diatas, perhatikan fungsi berikut :
Enkripsi.php
<?php
namespace Enkripsi;
function enkripsi($kata) {
// Logika enkripsi sesuai dengan yang Anda miliki
$kataArray = explode(" ", $kata);
$hasilArray = [];
foreach ($kataArray as $k) {
$panjang = strlen($k);
if ($panjang < 4) {
$hasilArray[] = $k;
} elseif ($panjang == 4) {
$awal = substr($k, -2) . "si";
$hasilArray[] = $awal . substr($k, 0, 2);
} else {
$awal = substr($k, -3) . "si";
$hasilArray[] = $awal . substr($k, 0, -3);
}
}
return implode(" ", $hasilArray);
}
function dekripsi($kata) {
// Logika dekripsi sesuai dengan yang Anda miliki
$kataArray = explode(" ", $kata);
$hasilArray = [];
foreach ($kataArray as $k) {
$panjang = strlen($k);
if ($panjang < 4) {
$hasilArray[] = $k;
} elseif ($panjang == 6) {
$awal = substr($k, 0, 2);
$akhir = substr($k, -2);
$hasilArray[] = $akhir . $awal;
} else {
$awal = substr($k, 0, 3);
$akhir = substr($k, 5);
$hasilArray[] = $akhir . $awal;
}
}
return implode(" ", $hasilArray);
}
function setkey()
{
$key = bin2hex(random_bytes(32));
return $key;
}
function setssl($plaintext, $key='')
{
$key = 'your-encryption-key';
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$encrypted = openssl_encrypt($plaintext, 'aes-256-cbc', $key, 0, $iv);
$encrypted = base64_encode($encrypted . '::' . $iv);
return $encrypted;
}
function unssl($encrypted)
{
$key = 'your-encryption-key';
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
list($encrypted_data, $iv) = explode('::', base64_decode($encrypted), 2);
$decrypted = openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
return$decrypted;
}
if (isset($_POST['action'])) {
$teks = trim($_POST['teks']);
if ($_POST['action'] == 'enkripsi') {
echo setssl(enkripsi($teks));
} elseif ($_POST['action'] == 'deskripsi') {
echo dekripsi(unssl($teks));
}elseif ($_POST['action']=='ssl') {
echo setkey($teks);
}
exit;
}
?>
Dalam contoh kode diatas, saya melapisi enkrispi dengan fungsi enkripsi ssl, sehingga bahasa atau text yang berhasil di enkripsi akan dilapisi oleh enkripsi ssl
Untuk mencoba proses enkripsi, silahkan buat index.php seperti berikut :
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<title>Enkripsi Teks</title>
<style>
body {
background-color: #f8f9fa;
}
.card {
margin-bottom: 20px;
}
.result {
background-color: #e9ecef;
border: 1px solid #ced4da;
padding: 15px;
border-radius: 5px;
}
h1 {
color: #007bff;
}
.btn-primary {
background-color: #007bff;
border-color: #007bff;
}
</style>
</head>
<body>
<div class="container mt-5">
<h1 class="text-center mb-4">Mengenkripsi Bahasa</h1>
<!-- <div class="card">
<div class="card-body">
<h2 class="card-title">Kunci SSL</h2>
<form id="sslkeyForm">
<div class="form-group">
<label for="teksSSL">Masukkan Teks:</label>
<input class="form-control" name="teks" id="teksSSL" placeholder="buat kunci ssl" required="">
</div>
<button type="submit" class="btn btn-primary">Enkripsi <i class="fas fa-lock"></i></button>
</form>
<h3 class="mt-4">Kunci SSL : </h3>
<p id="kunciSSL" class="result"></p>
</div>
</div>-->
<div class="card">
<div class="card-body">
<h2 class="card-title">Enkripsi Teks</h2>
<form id="enkripsiForm">
<div class="form-group">
<label for="teks">Masukkan Teks:</label>
<textarea class="form-control" id="teks" name="teks" rows="3" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Enkripsi <i class="fas fa-lock"></i></button>
</form>
<h3 class="mt-4">Hasil Enkripsi:</h3>
<p id="hasilEnkripsi" class="result"></p>
</div>
</div>
<div class="card">
<div class="card-body">
<h2 class="card-title">Deskripsi Teks</h2>
<form id="deskripsiForm">
<div class="form-group">
<label for="teksDeskripsi">Masukkan Teks:</label>
<textarea class="form-control" id="teksDeskripsi" name="teks" rows="3" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Deskripsi <i class="fas fa-unlock"></i></button>
</form>
<h3 class="mt-4">Hasil Dekripsi:</h3>
<p id="hasilDeskripsi" class="result"></p>
</div>
</div>
</div>
<!-- Optional JavaScript -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
$(document).ready(function() {
$('#enkripsiForm').on('submit', function(e) {
e.preventDefault();
const teks = $('#teks').val();
$.ajax({
url: 'Enkripsi.php',
method: 'POST',
data: { action: 'enkripsi', teks: teks },
success: function(response) {
$('#hasilEnkripsi').text(response);
}
});
});
$('#deskripsiForm').on('submit', function(e) {
e.preventDefault();
const teksDeskripsi = $('#teksDeskripsi').val();
$.ajax({
url: 'Enkripsi.php',
method: 'POST',
data: { action: 'deskripsi', teks: teksDeskripsi },
success: function(response) {
$('#hasilDeskripsi').text(response);
}
});
});
$('#sslkeyForm').on('submit', function(e) {
e.preventDefault();
const teksSSL= $('#teksSSL').val();
$.ajax({
url: 'Enkripsi.php',
method: 'POST',
data: { action: 'ssl', teks: teksSSL },
success: function(response) {
$('#kunciSSL').text(response);
}
});
});
});
</script>
</body>
</html>
Anda bisa mengilangkan fungsi enkripsi open ssl jika memang parameter hasil enkripsinya tidak ingin dilapisi dengan enkripsi tersebut.
numpang nyimak aja mas, roaming saya hehehe. Btw, semangat terus berbagi
ReplyDelete