Belajar Web

Belajar Web: Maret 2012

Archive for Maret 2012

Membuat Enkripsi Sederhana Menggunakan PHP

Posted by Gora Santika


Sumber Gambar : webtoolsandtips.com

Selamat pagi untuk semua. Pagi ini saya akan berbagi sedikit tutorial tentang membuat enkripsi sederhana menggunakan PHP. Secara sederhana, enkripsi adalah mengubah (meng-kode-kan) sebuah pesan yang dapat dimengerti manusia menjadi sulit atau bahkan tidak dapat dimengerti oleh manusia. Tujuannya adalah untuk menjaga kerahasiaan pesan tersebut.

Skrip enkripsi yang akan kita buat kali ini menggunakan metode subtitusi karakter yang memanfaatkan fungsi str_replace(). Algoritma pemrogramannya kurang lebih seperti ini:

  • Sebuah input kita baca secara keseluruhan.
  • Ganti karakter pada input sesuai dengan kode yang kita buat.
  • Tampilkan hasil enkripsi sebagai sebuah output.

Sederhana bukan?


Saatnya beraksi...

Langkah pertama adalah menyiapkan daftar kode/sandi yang diperlukan. Pada contoh kali ini, saya akan mengubah huruf vokal pada input.

<?php
$key = array(
 'a' => '~',
 'i' => '$',
 'u' => '^',
 'e' => '#',
 'o' => '+'
);
?>

Berhubung sifat dari str_replace() adalah case sensitive (huruf besar-kecil diperhatikan) maka sebelum kita proses, ada baiknya jika input kita ubah menjadi lowercase (huruf kecil) terlebih dahulu. Jika anda ingin mempertahankan besar-kecil nya huruf, anda dapat menambahkan beberapa index pada variabel $key yaitu huruf besar.

<?php
$key = array(
 'a' => '~',
 'i' => '$',
 'u' => '^',
 'e' => '#',
 'o' => '+',
 
 'A' => '!',
 'I' => '%',
 'U' => '_',
 'E' => '=',
 'O' => '*'
);
?>

Setelah kunci peng-kode-an siap, saatnya mensubtitusikan kode kita.

<?php
// Jika ingin membuat menjadi lowercase
// $input = strtolower($input);

// Subtitusi kode
$output = str_replace(array_keys($key), $key, $input);

// Menampilkan output
echo $output;
?>

Skrip secara keseluruhan:

<?php
$input=$_POST["input"];

$key = array(
 'a' => '~',
 'i' => '$',
 'u' => '^',
 'e' => '#',
 'o' => '+',
 
 'A' => '!',
 'I' => '%',
 'U' => '_',
 'E' => '=',
 'O' => '*'
);

// Jika ingin membuat menjadi lowercase
// $input = strtolower($input);

// Subtitusi kode
$output = str_replace(array_keys($key), $key, $input);

// Menampilkan output
echo $output;
?>

<form action="" method="post">
 <textarea name="input" cols="30" rows="8"></textarea>
 <input type="submit" value="Encrypt!" />
</form>

Untuk menambah variasi, dapat pula dituliskan kombinasi huruf unik pada variable $key seperti:

<?php
$key = array(
 'a' => '[53]',
 'i' => '[76]',
 'u' => '[25]',
 'e' => '[99]',
 'o' => '[01]',
 
 'A' => '[02]',
 'I' => '[55]',
 'U' => '[18]',
 'E' => '[19]',
 'O' => '[15]'
);

Untuk dekripsi kode, kita tinggal membalik variable pada str_replace()

// Enkripsi
$output = str_replace(array_keys($key), $key, $input);

// Dekripsi
$output = str_replace($key, array_keys($key), $input);
Pada project kali ini, fungsi str_replace() memiliki peran utama. Fungsi tersebut menerjemahkan teks yang kita masukkan menjadi kode yang kita harapkan.

Kelebihan:
  • Algoritma sederhana, tidak sulit untuk dibuat.
  • Tiap orang bisa membuat variasi yang berbeda.
  • Semakin kreatif mensubtitusi, semakin kuat enkirpsi.
  • Karena buatan sendiri, tidak ada yang mengerti algoritmanya.
  • Kerahasiaan algoritma ada di tangan anda sebagai pembuat.
Kekurangan:
  • Skrip di atas menggunakan metode subtitusi karakter alphabet menjadi karakter spesial. Jika user memasukkan salah satu dari karakter spesial yang tertulis di atas pada input, tidak akan terjadi masalah saat enkripsi. Namun saat dekripsi akan terjadi kesalahan penerjemahan.

Hasil dari percobaan di atas adalah: » seperti ini «

Berhubung di program ini masih ditemukan bug, maka saya coba memperbaikinya di PHP Enkripsi Tingkat Lanjut.



[Semoga Bermanfaat]