Home

Base64 Encoding, Step by Step

Mari berdiskusi bersama kami di Group Facebook Kurung Kurawal

Base64 Encoding adalah suatu bentuk representasi data binari menjadi bentuk teks. Yang artinya, data data dalam komputer yang sejatinya adalah berbentuk binary, diubah menjadi bentuk teks yang dapat dibaca manusia.

Menurut wikipedia,

Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an ASCII string format by translating it into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding.

Base64 encoding schemes are commonly used when there is a need to encode binary data that needs to be stored and transferred over media that is designed to deal with textual data. This is to ensure that the data remains intact without modification during transport. Base64 is commonly used in a number of applications including email via MIME, and storing complex data in XML.

Tidak usah berlama lama dengan penjelasan teorinya, karena saya sendiri juga sulit menjelaskan dengan bahasa indonesia yang baik dan benar.

Intinya, sebagai programmer, pasti pernah menggunakan fungsi base64 encode ini, karena banyak sekali bahasa pemrograman yang menyediakan library untuk fungsi ini, bahkan, ada yang menyertakannya dalam native support, bahasa pemrograman PHP misalnya.

Di post saya ini, saya cuma ingin sedikit merefresh otak mengenai bagaimana encoding base64 itu dilakukan. Pada dasarnya, menurut yang saya pahami, encoding base64 adalah mengubah karakter 8bit menjadi hanya 6bit. Dan karena itulah disebut base64, karena karakter yang mungkin ada hanya 64 saja, didapat dari 6bit, 2 pangkat 6 = 64.

64 karakter yang dimaksud adalah sebagai berikut (copas dari Wikipedia)

Value Char   Value Char   Value Char   Value Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Cara membaca tabel tersebut, misalnya, karakter dengan nilai 16 adalah huruf Q, nilai 34 adalah huruf i.

Lalu, apa yang dimaksud dengan merubah karakter 8bit menjadi 6 bit? Apakah 2 bit yang lain hilang? Tidak juga.

Yang dimaksud “karakter” disini sebenarnya bukanlah huruf atau simbol, melainkan nilai data dalam binari. Komputer hanya mengenal 1 dan 0, itu saja. Namun, agar lebih mudah menjelaskan, saya akan menggunakan karakter huruf (dan angka dan simbol) ASCII sebagai contoh.

(Masih dari wikipedia) Misalnya ada kata: M a n.
M nilai ASCII nya adalah 77, binari nya adalah 01001101
a nilai ASCII nya adalah 97, binari 01100001
n nilai ASCII nya adalah 110, binari 01101110

Bingung dengan konversi bilangan ke binari? Mungkin bisa dipelajari disini.

Tempelkan seluruh binari tersebut, menjadi 010011010110000101101110.
Perhatikan bahwa kita akan memproses 3 karakter, yang berarti 3 x 8 = 24 bit.
24 bit ini akan diubah menjadi karakter 6 bit, berarti terdapat 24 /6 = 4 karakter.
Potong deretan binari tadi per 6 bit
010011-010110-000101-101110
010011 = 19
010110 = 22
000101 = 5
101110 = 46

yang jika dilihat di tabel karakter base64, 19 adalah T, 22 adalah W, 5 adalah F, dan 46 adalah u, maka hasil encoding base64 dari kata “Man” adalah TWFu.

Kebetulan Man adalah kata dengan 3 karakter, alias 24 bit, yang mana 24 habis dibagi 6. Bagaimana jika kata “Mana” yang memiliki 32 bit, dan dibagi 6 sisa 2. Maka akan ada yang disebut dengan padding character, yaitu “=”, padding ini akan menambah panjang kata hingga mencapai kelipatan 3 terdekat.

Masih bingung ? Saya buatkan aplikasi sederhana untuk menjelaskan step by step proses encoding base64 ini. Namun tentu saja, aplikasi ini tidak menggunakan fungsi native bahasa pemrograman yang jauh lebih cepat melakukan perhitungan encoding ini, aplikasi ini hanya bertujuan mencoba memberikan penjelasan step by step proses encoding base64. Silakan digunakan (buka halaman sendiri).