Cara Kerja Pengodean Base64

Jika internet adalah jalan raya informasi, maka jalur untuk email adalah jurang sempit. Hanya gerobak yang sangat kecil yang bisa lewat.

Sistem transportasi email dirancang hanya untuk teks ASCII biasa. Mencoba mengirim teks dalam bahasa lain atau file sewenang-wenang seperti mendapatkan truk melalui jurang.

Bagaimana Truk Besar Melewati Jurang?

Lalu bagaimana Anda mengirim truk besar melalui jurang kecil? Anda harus membawanya berkeping-keping di ujung yang satu, mengangkut potongan-potongan melalui jurang, dan membangun kembali truk dari potongan-potongan di ujung yang lain.

Hal yang sama terjadi ketika Anda mengirim lampiran file melalui email . Dalam proses yang dikenal sebagai pengkodean data biner diubah menjadi teks ASCII, yang dapat diangkut dalam email tanpa masalah. Di ujung penerima, data didekodekan dan file asli dibangun kembali.

Salah satu metode pengkodean data arbitrer sebagai teks ASCII biasa adalah Base64. Ini adalah salah satu teknik yang digunakan oleh standar MIME untuk mengirim data selain teks biasa .

Base64 ke Rescue

Encoding Base64 mengambil tiga byte, masing-masing terdiri dari delapan bit, dan mewakili mereka sebagai empat karakter yang dapat dicetak dalam standar ASCII. Itu melakukan itu pada dasarnya dua langkah.

Langkah pertama adalah mengubah tiga byte menjadi empat angka enam bit. Setiap karakter dalam standar ASCII terdiri dari tujuh bit. Base64 hanya menggunakan 6 bit (sesuai dengan 2 ^ 6 = 64 karakter) untuk memastikan data yang disandikan dapat dicetak dan dapat dibaca manusia. Tak satu pun dari karakter khusus yang tersedia di ASCII digunakan.

64 karakter (maka nama Base64) adalah 10 digit, 26 karakter huruf kecil, 26 karakter huruf besar serta '+' dan '/'.

Jika misalnya, tiga byte adalah 155, 162 dan 233, aliran bit yang sesuai (dan menakutkan) adalah 100110111010001011101001, yang pada gilirannya sesuai dengan nilai-nilai 6-bit 38, 58, 11 dan 41.

Angka-angka ini dikonversi ke karakter ASCII pada langkah kedua menggunakan tabel pengkodean Base64. Nilai 6-bit dari contoh kita diterjemahkan ke urutan ASCII "m6Lp".

Proses dua langkah ini diterapkan ke seluruh urutan byte yang dikodekan. Untuk memastikan data yang disandikan dapat dicetak dengan benar dan tidak melebihi batas panjang baris server email apa pun, karakter baris baru disisipkan untuk menjaga panjang garis di bawah 76 karakter. Karakter baris baru dikodekan seperti semua data lainnya.

Memecahkan Endgame

Pada akhir proses encoding, kita mungkin mengalami masalah. Jika ukuran data asli dalam byte adalah kelipatan tiga, semuanya berfungsi dengan baik. Jika tidak, kita mungkin berakhir dengan satu atau dua bit 8-bit. Untuk pengkodean yang tepat, kita perlu tepat tiga byte, namun.

Solusinya adalah dengan menambahkan byte yang cukup dengan nilai '0' untuk membuat grup 3-byte. Dua nilai tersebut ditambahkan jika kita memiliki satu byte data tambahan, satu ditambahkan untuk dua byte tambahan.

Tentu saja, 'trailing' buatan ini tidak dapat dikodekan menggunakan tabel encoding di bawah ini. Mereka harus diwakili oleh karakter ke-65.

Karakter padding Base64 adalah '='. Tentu saja, itu hanya bisa muncul di ujung data yang dikodekan.

Tabel Pengkodean Base64

Nilai Arang Nilai Arang Nilai Arang Nilai Arang
0 SEBUAH 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 saya 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 saya 24 Y 40 Hai 56 4
9 J 25 Z 41 p 57 5
10 K 26 Sebuah 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 HAI 30 e 46 kamu 62 +
15 P 31 f 47 v 63 /