Cara Kerja Base64 Encoding Decoding

Hai hai kalian pembaca blogger catatanku ini. Minggu lalu saya dapat tugas kuliah nieh. Mata kuliah matematika komputasi. Nah salah satu bahasannya itu tentang base64 encoding decoding. Alhamdulillah dengan berbagai hambatan dan kebingungan sekarang saya sudah dapat memahami tentang apa sih base64 itu dan bagaimana cara kerjanya.

Seperti moto saya “Sedekahkanlah ilmumu pada orang lain agar bermanfaat” jadi kita mulai aja ya kuliah kali ini tentang base64 encoding decoding 😀

Sebelum tau cara kerja base64 encoding decoding ini, kita harus tahu apa sih base64 itu. Base64 adalah metoda yang digunakan untuk melakukan encoding (penyandian) terhadap data binary sehingga menjadi “printable” atau pendek katanya data binary disandikan menjadi format 7-bit character semacam bagian isi email.

Ingat bedakan antara encoding (penyandian) dengan encrypted (enkripsi), walaupun keduanya fungsinya nyaris sama. Intinya begini, ada satu baris data binary tapi ingin digabung dengan data teks dan atau dikirim dalam format teks, maka data binary itu tidak akan bisa menghasil informasi yang jelas sebelum di encode/sandi dulu ke format teks.

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

  1. Carilah kode ASCII dari masing-masing teks.
  2. Cari bilangan biner 8 bit dari kode ASCII yang ada.
  3. Gabungkan 8 bit tadi menjadi 24 bit.
  4. Kemudian, pecah 24 bit tadi menjadi 6 bit. Maka akan menghasilkan 4 pecahan.
  5. Masing-masing pecahan diubah diubah kedalam nilai decimal.
  6. Terakhir, jadikan nilai – nilai decimal tersebut menjadi indeks untuk memilih karakter penyusun dari base64 dan maksimal adalah 63 atau indeks ke 64.

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.     Carilah kode ASCII dari masing-masing teks

Contoh :  “Harga BBM Naik” nilai ASCII nya adalah :

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

2.    Cari bilangan biner 8 bit dari kode ASCII yang ada

Kita contohkan 3 huruf terdepan yaitu “Har” yang memiliki kode ASCII 72,97,114

Untuk mencari kode biner dari 72. Ikuti cara berikut :

  1. Buatlah deret bilangan 2 pangkat yang dimulai dari 20. Penulisan dimulai dari sebelah kanan. Batas bilangan harus kurang dari atau sama dengan (<=) nilai ASCII. Pada nilai 72 berarti kita menuliskan 26  25  24  23  22  21  20 . Sehingga kalau kita tuliskan jumlah perpangkatannya, akan kita temukan bilangan 64, 32, 16, 8, 4, 2, 1
  2. Kemudian kurangi 72 dengan 64. Karena 72 bisa dikurangi dengan 64 maka kita tuliskan 1. 72 – 64 = 8. Kemudian hasil 8 dikurangkan dengan 32. Karena 8 tidak bisa dikurangi dengan 32, maka kita tuliskan 0. Kemudian 8 – 16. Dan karena tidak bisa lagi kita tuliskan 0. Dan begitulah seterusnya sampai 1 sehingga dari nilai 72 akan terbentuk bilangan 1 0 0 1 0 0 0. Karena hanya ada 7 bilangan maka kita tambahkan 0 di depan menjadi 0 1 0 0 1 0 0 0. Sehingga kita sudah menemukan biner 8 bit dari H.

72   8    8  8   0  0  0

64  32  16  8  4  2  1

1    0     0   1   0   0  0    Berjumlah 7 bit. Tambahkan 0 di depan menjadi 0  1  0  0  1  0  0  0

Kalau kalian masih bingung cara konversi bilangan biner, coba deh baca postingan saya yang ini

3.    Gabungkan 8 bit tadi menjadi 24 bit.

Biner 8 bit dari “Har” adalah 01001000,01100001,01110010

Nah, kemudian bilangan tadi kita gabung menjadi 24 bit menjadi 010010000110000101110010

4.    Kemudian, pecah 24 bit tadi menjadi 6 bit

010010000110000101110010 = 010010,000110,000101,110010

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

010010,000110,000101,110010. Untuk mencari nilai desimal Lihat langkah berikut ini :

0        1   0   0   1   0

25   24  23  22  21  20                                 Hitunglah nilai 2 pangkat dari bil biner bernilai 1 saja

Jadi nilai yang dihitung hanya 21 dan 24 menjadi 2 + 16 = 18

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

6.     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.

Nah bagaimana ?? Mudah bukan proses encodingnya ?? Kalau artikel ini bermafaat, monggo komentarnya diisi atau share ke facebook atau twitter. Oh iya, jangan lupa Plus nya ya 😀

Terima kasih. Semoga Bermanfaat 🙂

Advertisements

2 comments on “Cara Kerja Base64 Encoding Decoding

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s