Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

Encoding String dengan Base64 dengan Key

Posted on February 08, 2010 by Syauqi Wiryahasana
Base64 mungkin adalah salah satu basis algoritma enkripsi yang dasar untuk digunakan dan mudah dipahami. Teorinya, kumpulan karakter ASCII yang ada diterjemahkan ke dalam format representasi radix-64 (lebih jelas). Di PHP, enkripsi Base64 sudah didukung secara native lewat berbagai fungsi. Untuk mengenkripsi sebuah string dengan enkripsi Base64 di PHP misalnya: [sourcecode language="php"] <?php $stringawal = "enkripsi saya dong"; $hasilenkripsi = base64_encode($stringawal); // enkripsi $stringawal dg metode base64 ?> [/sourcecode] Sedangkan untuk dekripsinya juga mudah: [sourcecode language="php"] <?php $stringterenkripsi = "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4="; $hasildekripsi = base64_decode($stringterenkripsi); echo $hasildekripsi; ?> [/sourcecode] Algoritma Base64 sendiri merupakan salah satu algoritma enkripsi yang sudah dipecahkan lama, sehingga kurang begitu aman dipakai. Untuk itulah perlu ada trik tersendiri untuk mengatasinya, misalnya dengan menggunakan key enkripsi. Untuk itu kita harus memperluas fungsi yang ada/native itu dengan selera sendiri. Berikut contohnya: [sourcecode language="php"] <?php // fungsi enkripsi base64 dengan key function base64_encrypt($plain_text, $password, $iv_len = 16) { $plain_text .= "\x13"; $n = strlen($plain_text); if ($n % 16) $plain_text .= str_repeat("\0", 16 - ($n % 16)); $i = 0; $enc_text = get_rnd_iv($iv_len); $iv = substr($password ^ $enc_text, 0, 512); while ($i < $n) { $block = substr($plain_text, $i, 16) ^ pack('H*', md5($iv)); $enc_text .= $block; $iv = substr($block . $iv, 0, 512) ^ $password; $i += 16; } $hasil=base64_encode($enc_text); return str_replace('+', '@', $hasil); } // fungsi base64 decrypt // untuk mendekripsi string base64 function base64_decrypt($enc_text, $password, $iv_len = 16) { $enc_text = str_replace('@', '+', $enc_text); $enc_text = base64_decode($enc_text); $n = strlen($enc_text); $i = $iv_len; $plain_text = ''; $iv = substr($password ^ substr($enc_text, 0, $iv_len), 0, 512); while ($i < $n) { $block = substr($enc_text, $i, 16); $plain_text .= $block ^ pack('H*', md5($iv)); $iv = substr($block . $iv, 0, 512) ^ $password; $i += 16; } return preg_replace('/\\x13\\x00*$/', '', $plain_text); } function get_rnd_iv($iv_len) { $iv = ''; while ($iv_len-- > 0) { $iv .= chr(mt_rand() & 0xff); } return $iv; } #### Penggunaan $key = "ini key rahasia loh"; $stringawal = "coba coba"; // enkripsi dengan fungsi base64_encrypt $stringterenkripsi = base64_encrypt($stringawal,$key); echo $stringterenkripsi; // dekripsi dengan base64_decrypt $stringdekripsi = base64_decrypt($stringterenkripsi,$key); echo $stringdekripsi; ?> [/sourcecode] Enkripsi base64 dengan key ini cukup aman untuk digunakan selama key tidak diketahui. Sering-seringlah ganti key enkripsi, atau gunakan kombinasi key dengan tanggal/waktu hari ini. Selamat mencoba!
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically