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
Contoh Sederhana :
<?php
Berikut ini contoh lain Enkripsi Base64 dengan menggunakan Key(Kunci)
// Membuat Enkripsi $password = "password"; $enkripsi = base64_encode($password); //hasil enkripsi = cGFzc3dvcmQ= // Dekripsi Data $password = "cGFzc3dvcmQ="; $dekripsi = base64_decode($password); //hasil dekripsi = password ?>
<?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
$password = base64_encode($_REQUEST['password']); // enkripsi diletakan disini karena hanya user saja yang tau passwordnya.
//kalo bisa select data dari database yang datanya sudah di enkrip
$pass_database = 'amFuZ2FuIG1lbXBlcnN1bGl0IGRpcmk='; //ket : tidak ada keterangan di enkrip dengan metode apa
$key = "$password";
$stringawal = "Password Anda Benar";
// enkripsi dengan fungsi base64_encrypt
$stringterenkripsi = base64_encrypt($stringawal,$key);
echo $stringterenkripsi;
echo "<br/> ";
if ($password==$pass_database)
{
// dekripsi dengan base64_decrypt
$stringdekripsi = base64_decrypt($stringterenkripsi,$key);
echo $stringdekripsi;
}
?>
<form name="form1" method="post" action="base64.php" >
<input type="text" name="password" value="">
<input type="submit" name="proses" value="save" tabindex="7"/>
</form>
Simpan Dengan Nama base64.php
Kemudian Coba anda jalankan .
Disana akan ada Enkripsi Tulisan yang sudah Di Enkripsi dan anda harus menebak apa Kuncinya.
jika Anda Benar Maka akan keluar message "Password Andna Benar"
Dan jika anda Ingin Tau kuncinya Maka ini kuncinya "jangan mempersulit diri"
Selamat Mencoba
gan=== kalau digunakan untuk enkrip gambar bisa gak gan???
ReplyDeleteCoba Baca yang ini gan.
Deletehttp://working-log.blogspot.com/2012/12/enkripsi-gambar-dengan-base64.html
Gan, bisa ga jelaskan secara singkat gitu ttg base64 yg codingnya menggunakan key? kalau konsep dasar base64 saya sudah paham tp jika menggunakan key bagaimana cara jelasinnya gan?
ReplyDeleteMohon pencerahannya, terima kasih...
gan tolong jelasin tentang kekurangan dan kelebihan base64 dong
ReplyDelete