Proses Encrypt dan Decrypt yang dalam bahasa indonesia nya adalah proses enkripsi dan dekripsi merupakan proses untuk menyamarkan data dengan menggunakan algoritma. Laravel sendiri sudah menyediakan fitur untuk membuat proses enkripsi dan dekripsi.
Enkripsi Laravel menggunakan OpenSSL untuk menyediakan enkripsi AES-256 dan AES-128. Dengan fitur Encrypt dan Decrypt dari laravel ini, kita bisa gunakan untuk membuat enkripsi berbagai data termasuk membuat enkripsi URL website atau sistem yang kita buat.
Jika telah membaca turorial laravel sebelumnya, tentang membuat login dengan laravel, pasti kita melihat password user yang dienkripsi, itu adalah salah satu kegunaan enkripsi dalam pembuatan aplikasi. Jadi kita bisa menyamarkan atau merahasiakan data yang bersifat sensitif, agar tidak mudah terbaca ke publik.
Enkripsi dan Dekripsi di Laravel
Untuk mulai memulai tutorial ini, silahkan buat sebuah controller baru, misal dengan nama EnkripsiController.php. Supaya menghemat waktu, kita bisa membuat controller dengan php artisan, masuk ke project laravel kita melalui CMD atau terminal, kemudian ketik perintah artisan berikut :
php artisan make:controller EnkripsiController
Setelah membuat controller EnkripsiController.php, sekarang buka pengaturan routes laravel yang ada pada file /routes/web.php dan buat route baru seperti berikut :
Route::get('/enkripsi', 'EnkripsiController@enkripsi');
Route di atas bertujuan untuk membuat url ‘/enkripsi’, dan akan menjalankan method atau function enkripsi() dalam controller EnkripsiController.php pada saat url tersebut diakses. Selanjutnya buat method enkripsi() dalam controller EnkripsiController.php.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
class EnkripsiController extends Controller
{
public function enkripsi()
{
$encrypted = Crypt::encryptString('Belajar Laravel di agussuratna.net');
$decrypted = Crypt::decryptString($encrypted);
echo "Hasil Enkripsi : " . $encrypted;
echo "<br/>";
echo "<br/>";
echo "Hasil Dekripsi : " . $decrypted;
}
}
Perhatikan pada contoh penggunaan fungsi encrypt dan decrypt di atas, untuk menggunakan fungsi encrypt dan decrypt laravel, kita wajib memanggil terlebih dulu Facade Crypt.
use Illuminate\Support\Facades\Crypt;
Baru kemudian kita bisa menggunakan fungsi encrypt dan decrypt untuk membuat enkripsi dan dekripsi data di laravel.
Selanjutnya perhatikan pada function enkripsi(), untuk membuat enkripsi kita bisa menggunakan method Crypt::encryptString(), dengan memasukkan data yang ingin dienkripsi di dalam parameter method ini.
Untuk mendekripsi kita bisa menggunakan method Crypt::decryptString(), dengan memasukkan hasil enkripsi data yang ingin didekripsi.
Sekarang lihat hasilnya dengan menjaankan project laravel kita dan akses route ‘/enkripsi’.
php artisan serve
kemudian akses localhost:8000/enkripsi, maka hasilnya seperti berikut :

Seperti yang terlihat pada gambar di atas, data yang sebelumnya berbentuk string “Belajar Laravel di agussuratna.net” berhasil di enkripsi, kemudian kita juga mendekripsi kembali hasil enkripsi sebelumnya, sehingga berhasil menampilkan kembali isi data string yang berisi “Belajar Laravel di agussuratna.net”.
Membuat Enkripsi URL di Laravel
Kita juga bisa membuat enkripsi URL pada laravel dengan menggunakan fitur ini, caranya masih sama seperti sebelumnya, hanya saja kita perlu membuat route yang menangkap data seperti yang sudah kita pelajari sebelumnya. Kita buat route baru pada routes/web.php
Route::get('/data/', 'EnkripsiController@data');
Route::get('/data/{datarahasia}', 'EnkripsiController@dataproses');
Route di atas adalah contoh route pengiriman data dari URL yang dibuat, untuk ke depannya kita bisa mengembangkan lagi sesuai dengan keinginannya.
Pada route ‘/data’ kita akan mengirimkan data melalui url, data yang dikirim menuju ke url yang kedua, yaitu ‘/data/{datarahasia}’.
Selanjutnya buat 2 function dalam controller EnkripsiController.php sesuai dengan yang kita buat pada route di atas.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
class EnkripsiController extends Controller
{
public function enkripsi()
{
$encrypted = Crypt::encryptString('Belajar Laravel di agussuratna.net');
$decrypted = Crypt::decryptString($encrypted);
echo "Hasil Enkripsi : " . $encrypted;
echo "<br/>";
echo "<br/>";
echo "Hasil Dekripsi : " . $decrypted;
}
public function data()
{
$parameter =[
'nama' => 'Agus Suratna',
'pekerjaan' => 'Guru RPL',
];
$enkripsi= Crypt::encrypt($parameter);
echo "<a href='/data/".$enkripsi."'>Klik</a>";
}
public function dataproses($data)
{
$data = Crypt::decrypt($data);
echo "Nama : " . $data['nama'];
echo "<br/>";
echo "Pekerjaan : " . $data['pekerjaan'];
}
}
Pada contoh di atas, untuk menampilkan tidak menggunakan view, jadi langsung saja dibuat pada bagian controllernya, kita bisa terapkan sendiri nanti dalam view.
Seperti yang sudah dibahas sebelumnya, function data() menjadi pengirim data dan function dataproses() yang menerima datanya.
Pada function data() kita buat contoh dengan sebuah array yang menyimpan data nama dan pekerjaan, kemudian di enkripsi dengan method Crypt::encrypt(), hasil enkripsinya kita kirimkan ke function dataproses() melalui url.
Kemudian pada function dataproses() kita tangkap datanya seperti biasa, kemudian kita dekripsi datanya dan kita tampilkan sesuai dengan data yang dikirim dalam array tadi.
Untuk menampilkan data lebih baik kita menggunakan view, seperti materi sebelum-sebelumnya, karena berhubung ini hanya contoh jadi langsung saja saya buat di controllernya langsung.
Sekarang jalankan project laravel kita, dan akses localhost:8000/data, maka hasilnya seperti berikut :

Seperti yang sudah kita buat, link di atas berisi data nama dan pekerjaan yang kita buat dalam array dan kita enkripsi, sehingga pada saat di klik, url tersebut adalah hasil enkripsi yang kita kirimkan melalui url tadi, kemudian kita decrypt pada function dataproses() dan kita tampilkan datanya.
Demikian tutorial Encrypt dan Decrypt pada Laravel, selamat belajar dan semoga bermanfaat. Jika ada pertanyaan silahkan tuliskan di kolom komentar. Untuk dokumentasi tentang Encrypt dan Decrypt Laravel dari situs resmi laravel, bisa baca pada di sini.
Be the first to comment