Proses Encode dan Decode Base64 Secara Manual dan Otomatis
Dalam prosesnya, baik encoding maupun decoding melibatkan perubahan data dalam bentuk binari (binary). Seperti yang diketahui, pada dasarnya komputer hanya mengenal data/informasi dalam bentuk binari (hanya mengenal angka 0 dan 1) kemudian data binari ini dirubah menjadi bentuk data/informasi yang bisa dibaca manusia secara umum.
Encoding Base64 dan Decoding Base64 merupakan cara untuk merubah data yang hanya mencakup 64 karakter pada standar ASCIIPada prosesnya, Encoding Base64 akan mengubah nilai desimal setiap karakter menjadi biner 8 bit. Setelah itu, setiap biner 8 bit diubah menjadi biner 6 bit.
64 Karakter dan Nilai Desimal Base64 Terlihat Seperti Berikut:
Tabel 1: Nilai Desimal dan Karakter Base64
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.
Karakter dan Nilai Desimal Standar ASCII
Yang dimaksud karakter disini sebenarnya bukanlah huruf atau simbol, melainkan nilai data binari yang dikonversi dari bilangan desimal.Semua karakter dan nilai desimal berdasarkan standar ASCII terlihat seperti pada tabel berikut
Tabel 2: Nilai Desimal dan Karakter ASCII
Proses Manual Encode dan Decode Base64
Prses Encode Base64: Cara Merubah 8 Bit Menjadi 6 Bit
Pada prosesnya, Encoding Base64 akan mengubah nilai desimal setiap karakter menjadi biner 8 bit. Setelah itu, setiap biner 8 bit diubah menjadi biner 6 bitProses Encoding Base64 untuk mengubah nilai desimal setiap karakter menjadi biner 8 bit bisa dilihat pada contoh berikut:
Contoh Encode Base64 Tanpa Padding
Misalnya ada kata: eTaUntuk nilai desimal setiap karakter pada kata eTa, bisa dilihat pada Tabel 2 di atas dan untuk konversi ke bilangan binernya bisa dilakukan secara manual
e ⇒ nilai desimalnya: 101, binarinya: 01100101 (hasil konversi bilangan desimal ⇒ biner)
T ⇒ nilai desimalnya: 84, binarinya: 01010100 (hasil konversi bilangan desimal ⇒ biner)
a ⇒ nilai desimalnya: 97, binarinya: 01100001 (hasil konversi bilangan desimal ⇒ biner)
Susunan/gabungan seluruh biner pada kata eTa adalah: 011001010101010001100001
Perhatikan bahwa kita akan memproses 3 karakter (eTa), setelah setiap karakternya dikonversi menjadi biner 8 bit maka banyaknya bit pada kata eTa sebanyak 3 x 8 = 24 bit.
Dari 24 bit ini akan diubah menjadi karakter yang terdiri dari 6 bit, yang berarti akan terdapat sebanyak 24/6 = 4 karakter (habis dibagi 6, tidak ada sisa, nantinya tidak akan ada padding '=').
Untuk mendapatkan setiap karakter yang terdiri dari 6 bit, susun dan pisahkan (dari kiri) deretan binari tadi setiap 6 bit seperti berikut:
011001-010101-010001-100001
Dari susunan binari yang sudah dipisahkan setiap 6 bit seperti di atas, akan diperoleh 4 karakter seperti berikut:
011001 = | 25 (biner ⇒ desimal) = | Z (karakter dari Tabel 1) |
010101 = | 21 (biner ⇒ desimal) = | V (karakter dari Tabel 1) |
010001 = | 17 (biner ⇒ desimal) = | R (karakter dari Tabel 1) |
100001 = | 33 (biner ⇒ desimal) = | h (karakter dari Tabel 1) |
Contoh Encode Base64 dengan Padding
Misalnya ada kata: CingNaOnNilai desimal dan biner untuk setiap karakter pada kata CingNaOn adalah:
C ⇒ nilai desimalnya: 67, binarinya: 01000011
i ⇒ nilai desimalnya: 105, binarinya: 01101001
n ⇒ nilai desimalnya: 110, binarinya: 01101110
g ⇒ nilai desimalnya: 103, binarinya: 01100111
N ⇒ nilai desimalnya: 78, binarinya: 01001110
a ⇒ nilai desimalnya: 97, binarinya: 01100001
O ⇒ nilai desimalnya: 79, binarinya: 01001111
n ⇒ nilai desimalnya: 110, binarinya: 01101110
Susunan/gabungan deretan biner dari kata CingNaOn yang terdiri 8 karaker ini sebanyak 8 x 8 bit = 64 bit seperti berikut:
0100001101101001011011100110011101001110011000010100111101101110
Dari 64 bit ini akan diubah menjadi karakter yang terdiri dari 6 bit, yang berarti akan terdapat sebanyak 64/6 = 10 karakter, sisa 4 bit (4 bit sisa ini akan menghasilkan 1 karakter dan 1 padding '=').
Jadi total karakter yang akan dihasilkan sebanyak 12 karaker (dengan padding)
Dari susunan ini akan diperoleh karaker sebagai berikut:
010000 = | 16 (biner ⇒ desimal) = | Q (karakter dari Tabel 1) |
110110 = | 54 (biner ⇒ desimal) = | 2 (karakter dari Tabel 1) |
100101 = | 37 (biner ⇒ desimal) = | l (karakter dari Tabel 1) |
101110 = | 46 (biner ⇒ desimal) = | u (karakter dari Tabel 1) |
011001 = | 25 (biner ⇒ desimal) = | Z (karakter dari Tabel 1) |
110100 = | 52 (biner ⇒ desimal) = | 0 (karakter dari Tabel 1) |
111001 = | 57 (biner ⇒ desimal) = | 5 (karakter dari Tabel 1) |
100001 = | 33 (biner ⇒ desimal) = | h (karakter dari Tabel 1) |
010011 = | 19 (biner ⇒ desimal) = | T (karakter dari Tabel 1) |
110110 = | 54 (biner ⇒ desimal) = | 2 (karakter dari Tabel 1) |
111000 = | 56 (biner ⇒ desimal) = | 4 (karakter dari Tabel 1) |
Hasil akhir Encode Base64 dengan padding untuk kata CingNaOn adalah Q2luZ05hT24=
Prses Decode Base64: Cara Merubah 6 Bit Menjadi 8 Bit ????
Secara manual, proses Decode Base64 ini tinggal balikan saja.... Susun/gabungkan setiap bit hasil Encode Base64 itu lalu pisahkan (dari kiri) setiap 8 bit. Setelah dipisahkan setiap 8 bit, konversikan bilangan biner setiap 8 bit itu ke dalam bilangan desimal.Akhirnya cek karakter untuk setiap bilangan desimal sesuai karakter yang ada pada Tabel 2.