RSS

Mengenal Base64 Encoding (Bagian 2)

11 Jun

Mengenal Base64 Encoding (Bagian 2).

Teknik encoding Base64 sebenarnya sederhana, jika ada satu senarai (string) bytes yang akan disandikan ke Base64 maka caranya adalah :

1. Pecah string bytes tersebut ke per-3 bytes.
2. Gabungkan 3 bytes menjadi 24 bit. Ingat 1 bytes = 8 bit, sehingga 3 x 8 = 24 bit.
3. Lalu 24 bit yang disimpan dibufferkan (disatukan) dipecah – pecah menjadi 6 bit – 6 bit, maka akan menghasilkan 4 pecahan.
4. Masing – masing pecahan diubah kedalam nilai decimal, dimana maksimal nilai 6 bit adalah 63.
5. Terakhir, jadikan nilai – nilai decimal tersebut menjadi indeks untuk memilih karakter penyusun dari base64 dan maksimal adalah 63 atau indeks ke 64.

Dan seterusnya sampai akhir string bytes yang mau kita konversikan.

Jika ternyata dalam proses encoding terdapat sisa pembagi, maka tambahkan sebagai penggenap sisa tersebut karakter ‘=’. Maka terkadang pada base64 akan muncul satu atau dua karakter ‘=’.

Bagaimana ?? Masih bingung🙂, pasti bingung kalau baru pertama kali membacanya. Untuk memudahkan memahaminya, saya coba ilustrasikan dengan contoh dibawah ini.

Contoh :

(disini saya contohkan dengan data Teks walaupun manfaat utamanya adalah untuk data binari, tapi ini biar mudah dipahami)

Ada data teks :

Harga BBM Naik

diencoding akan menghasilkan :

SGFyZ2EgQkJNIE5haWs=

bagaimana cara bekerjanya :

1. Pecah string bytes tersebut ke per-3 bytes.

Pertama dapatkan dulu nilai bytes dari data teks tersebut. (Ingat Base64 Encoding adalah operasi manipulasi bit)

“Harga BBM Naik” nilai ASCI nya adalah : 72,97,114,103,97,32,66,66,77,32,78,97,105,107

Lalu pecah per 3 bytes.

72,97,114 – 103,97,32 – 66,66,77 – 32,78,64 – 105,107

untuk memudahkan membaca bit datanya, kita konversi nilai decimal ini ke nilai hexa. Gunakan kalkulator Dec2Hex. Sekarang Linux dan Windows sudah memiliki kalkulator ini.

72,97,114 = 0x48,0x61,0x72

Lalu kita pisahkan angkanya satu persatu dan ubah masing – masing angka menjadi nilai biner lalu digabung menjadi 24 bit.

0x48,0x61,0x72 = 4 & 7, 6 & 1, 7 & 2 = 0100-1000,0110-0001,0111-0010

Hasilnya :

Har = 72,97,114 = 01001000,01100001,01110010

Nah sekarang kita sudah mendapatkan string bytes (data binari) dari data teks “Har”

Tips : Pake kalkulator yang di WinXP/Linux bisa langsung ubah nilai decimal ke binari🙂.
Diatas biar memahami fungsi hexadecimal aja🙂

2. Gabungkan 3 bytes menjadi 24 bit.

01001000,01100001,01110010 = 010010000110000101110010

3. Pecah menjadi 6 bit – 6 bit dan akan menghasilkan 4 pecahan.

010010000110000101110010 = 010010,000110,000101,110010

4. Masing – masing pecahan (adalah nilai octal) diubah kedalam nilai decimal.

010010,000110,000101,110010 = 18,6,5,50

kita dapat nilai (decimal) untuk “Har” =18,6,5,50

5. Jadikan nilai – nilai tersebut menjadi indeks untuk memilih karakter penyusun dari base64

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

dimana [A = 0], maka atau Base64Char[0] = “A”

18 = S, 6 = G, 5 = F, 50 = y

sehingga,

“Har” = “SGFy”

Jadi bisa dipahami, bahwa setiap 3 bytes data akan menghasilkan 4 bytes data artinya 4/3 (33%) lebih banyak.

“ga ” = “Z2Eg” (spasi termasuk 1 karakter )

Dan lakukan seterusnya seperti diatas untuk 3 bytes berikutnya.

Nah yang “ik” ini tidak genap 3 bytes ini yang dinamakan terjadi “pad”.

105,107 = 01101001,01101011 = 011010,010110,1011

011010,010110,1011 + 00 = 011010,010110,101100 = 26,22,44

“ik” = “aWs”

lalu tambahkan “=” sebagai penggenap sehingga lengkapnya -> SGFyZ2EgQkJNIE5haWs=

Dengan ini kita sekrang bisa paham bahwa operasi yang dilakukan adalah operasi binner yang diubah ke data teks.

Dan inilah cara kerja yang dinamakan Base64Encode.

Ada beberapa modifikasi dari Base64Encode ini khususnya pada karakter “+/”

contohnya urlbase64encode dimana “+” diubah menjadi “-” dan “/” menjadi “_” serta dihilangkannya “=”, tujuan penggantian ini disebabkan pada URL karakter “+” akan diubah menjadi “‘%2B” dan “/” menjadi “%2F” sehingga bisa merubah makna.

Demikianlah selanjutnya berita sore ini, jangan kemana – mana karena acara berikutnya adalah film kartun “Naruto”. Apa ini ???🙂

Oleh Syamsu.

Bagian 1

 
5 Komentar

Ditulis oleh pada Juni 11, 2008 in Encoding

 

Tag: ,

5 responses to “Mengenal Base64 Encoding (Bagian 2)

  1. Medria Matt

    Mei 11, 2009 at 1:09 pm

    Wah bagus sekali artikelnya, mudah dipahami dan sangat jelas, oh iya pas baris :
    “0×48,0×61,0×72 = 4 & 7, 6 & 1…” itu seharusnya 4& 8 ya bukan 4 & 7?”

    Makasih ya atas artikelnya, karena sangat membantu pemahaman mengenai base64..
    Thanx alot =9 …

     
  2. Penulis Bebas

    Mei 11, 2009 at 6:16 pm

    Upss iya salah. Harusnya memang 4 & 8. Makasih yaa..

    Koreksinya disini aja yaa

    bukan -> 0×48,0×61,0×72 = 4 & 7, 6 & 1, 7 & 2
    harus -> 0×48,0×61,0×72 = 4 & 8, 6 & 1, 7 & 2

     
  3. kapten_junior

    Juli 11, 2009 at 7:36 pm

    thx kakak, sangat membantu saya dalam memahami apa itu base64,,
    tutorial nya enak di baca, gambang di pahami, segar rasa nya,
    penjelasan kakak, dapat saya tangkap dengan sempurna, karena saya ada dasarnya dikit , tentang perpindahan bilangan decimal ke hexa, hexa ke biner,

    ex : 4 & 8 -> 0100-1000
    kenapa 4 jadi 0100 (karena “2” pangkat “2”, penghitunagan dimulai dari kanan ke kiri, yang di awali dengan pangkat “0”, dan angka “1” berada urutan “3” , sehingga menjadi 2 pangkat 2 , karena di mulai dari anggka 0 , dan alhasil nya angka nya jadi 4)

    sekalilagi thx kakak, atas tutor base64 nya,
    salam kenal dari :
    +=+ kapten_junior +=+

     
  4. ANdy

    September 28, 2012 at 11:01 pm

    mas ,mau tanya mas.itu mesti pad nya tanda “=” yahh? makasih sebelumnya

    Jawab: Iya mesti ‘=’ karena itu sudah kesepakatannya

     
  5. ALdi

    Juni 8, 2013 at 3:23 pm

    Assalam, terima kasih untuk tutorialnya kakak.
    saya jadi bisa paham dengan konsep penjelasan sederhannya.

    Tapi ada pertanyaan, setelah data di Encode bagaimana kah Prosedur untuk DeCode data kembali menjadi data asli?

    Terima kasih untuk balasannya.🙂

     

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s