Pages

Friday, May 25, 2012

Enkripsi Data dengan Base64

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
// Membuat Enkripsi
$password = "password";
$enkripsi = base64_encode($password);
//hasil enkripsi = cGFzc3dvcmQ=

// Dekripsi Data
$password = "cGFzc3dvcmQ=";
$dekripsi = base64_decode($password);
//hasil dekripsi = password
?>
Berikut ini contoh lain Enkripsi Base64 dengan menggunakan Key(Kunci)



<?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

4 comments:

  1. gan=== kalau digunakan untuk enkrip gambar bisa gak gan???

    ReplyDelete
    Replies
    1. Coba Baca yang ini gan.

      http://working-log.blogspot.com/2012/12/enkripsi-gambar-dengan-base64.html

      Delete
  2. 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?

    Mohon pencerahannya, terima kasih...

    ReplyDelete
  3. gan tolong jelasin tentang kekurangan dan kelebihan base64 dong

    ReplyDelete