Cara Kerja Base64 Encoding



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 ‘=’.
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 = 0×48,0×61,0×72
Lalu kita pisahkan angkanya satu persatu dan ubah masing – masing angka menjadi nilai biner lalu digabung menjadi 24 bit.
0×48,0×61,0×72 = 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”
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.

Analisa Saya :
Menurut pandangan saya tentang base64 adalah salah satu tekhnik kriptografi yang tujuannya adalah membuat suatu kata ataupun karakter dirubah kedalam bentuk kode atau sandi yang tujuannya supaya tidak mudah dibaca sama orang lain.


Sumber :

0 komentar:

Posting Komentar