Just Share Information and Experience

Saturday 2 December 2017

Cara Enkripsi Data Id Pada URL PHP

egan-jy.blogspot.co.id

Setiap aplikasi tentunya pasti memiliki database untuk menyimpan datanya. Baik aplikasi berbasis desktop, mobile apalagi web. Biasanya data yang kita simpan ke dalam database tersebut memiliki sebuah id yang unik agar sistem dapat membedakan data yang satu dengan yang lainnya. Unik disini sangat diperlukan agar nantinya aplikasi dapat lebih mudah saat melakukan read,update,ataupun delete data. Namun disini topik utama yang saya bahas bukan tentang keunikan ID tersebut, melainkan bagaimana cara meng-enkripsi id yang kita ambil dari database ke dalam sebuah URL aplikasi web ataupun sebaliknya.  

Baca Juga :
                     Cara Membuat Random String dari Karakter Tertentu
                     Mengatasi Error "This Request Takes Too Long to Process" di PHP

Setiap kita membuat suatu aplikasi web untuk melihat detail suatu data atau update maupun delete data, pasti kita menyertakan ID data pada URL web tersebut yang bertujuan untuk menandai data yang sedang di proses. Hal ini mungkin kelihatan biasa saja bagi sebagian orang, tetapi bagi saya ini merupakan salah satu dari kelemahan suatu aplikasi berbasis web. Alangkah baiknya jika ID tersebut kita enkripsi enjadi kode yang sulit dipahami oleh pengguna yang menggunakan aplikasi kita.

Dalam bahasa pemrograman PHP sudah ada fungsi yang dapat mengenkripsi dan mendeskripsi suatu string data. Fungsi tersebut adalah "base64_encode" untuk enkripsi dan "base64_decode" untuk dekripsi. Dalam artikel ini saya juga akan menggunakan fungsi tersebut, namun  karena mudahnya mengenkripsi dan dekripsi data dengan cara di atas, maka saya akan menambahkan fitur enkripsi lagi dengan kunci yang dapat kita tentukan sendiri. Sehingga jika orang ingin melakukan dekripsi, maka selain dengan cara "base64_decode" juga harus menggunakan algoritma dekripsi tambahan dan kunci yang sudah kita tentukan sebelumnya.

Dalam artikel ini, saya tidak langsung mempraktekkanya ke dalam URL, melainkan hanya fungsi enkripsi dan dekripsinya. Intinya nanti ID yang ingin di enkripsi atau sebaliknya cukup panggil fungsi ini.

Ok, langsung saja berikut adalah script yang digunakan :


<?php

function MyEncode_base64($Ndata)
    {
        $sBase64 = base64_encode($Ndata);
        return strtr($sBase64, '+/', '-_');
    }

function MyEncrypt($Ndata, $sKey='1K4D3kMeg4NJaY4')
      {
        $sResult = '';

        for($i = 0; $i < strlen($Ndata); $i ++)
        {
         $sChar    = substr($Ndata, $i, 1);
         $sKeyChar = substr($sKey, ($i % strlen($sKey)) - 1, 1);
         $sChar    = chr(ord($sChar) + ord($sKeyChar));
         $sResult .= $sChar;
        }

        return MyEncode_base64($sResult);
      }

function MyDecode_base64($EData)
    {
          $sBase64 = strtr($EData, '-_', '+/');
          return base64_decode($sBase64);
    }

function MyDecrypt($Edata, $sKey='1K4D3kMeg4NJaY4')
      {
          $sResult = '';
          $Edata   = MyDecode_base64($Edata);
          for($i = 0; $i < strlen($Edata); $i ++)
          {
           $sChar    = substr($Edata, $i, 1);
           $sKeyChar = substr($sKey, ($i % strlen($sKey)) - 1, 1);
           $sChar    = chr(ord($sChar) - ord($sKeyChar));
           $sResult .= $sChar;
          }
          return $sResult;
      }


echo "Hasil enkripsi kata egan : ".MyEncrypt('egan');

echo'

Hasil dekripsi kembali 

';

echo'hasil dekripsi : '.MyDecrypt(MyEncrypt('egan'));


?>


Sekarang, silahkan jalankan di web browser masing-masing dan lihat hasilnya. Pada contoh di atas saya membuat contoh untuk enkripsi dan enkripsi kata "egan", nanti kata egan tersebut dapat kalian ganti menjadi id dari database. Selanjutnya untuk "key" enkripsi dan dekripsi dapat kalian sesuaikan dengan keinginan masing-masing.

Jika masih ada yang belum dimengerti, bisa tinggalkan komentar dibawah ya..

1 comment: