Cara Pengekodan Base64 Berfungsi

Isi kandungan:

Cara Pengekodan Base64 Berfungsi
Cara Pengekodan Base64 Berfungsi
Anonim

Pengekodan Base64 ialah proses menukar data binari kepada format rentetan ASCII dengan menukar data binari tersebut kepada perwakilan aksara 6-bit. Kaedah pengekodan Base64 digunakan apabila data binari, seperti imej atau video, dihantar melalui sistem yang direka bentuk untuk menghantar data dalam format teks biasa (ASCII).

Mengapa Pengekodan Base64 Digunakan?

Keperluan untuk pengekodan Base64 datang daripada masalah yang berlaku apabila media dihantar dalam format binari mentah kepada sistem berasaskan teks.

Memandangkan sistem berasaskan teks (seperti e-mel) mentafsir data perduaan sebagai pelbagai aksara, termasuk aksara arahan khas, kebanyakan data perduaan yang dihantar untuk memindahkan media disalahtafsirkan oleh sistem tersebut dan hilang atau rosak dalam proses penghantaran.

Image
Image

Satu kaedah pengekodan jenis data binari ini dengan cara yang mengelakkan masalah penghantaran sedemikian adalah dengan menghantarnya sebagai teks ASCII biasa dalam format yang dikodkan Base64. Ini adalah salah satu teknik yang digunakan oleh standard MIME untuk menghantar data selain daripada teks biasa.

Banyak bahasa pengaturcaraan, seperti PHP dan Javascript, menyertakan fungsi pengekodan dan penyahkodan Base64 untuk mentafsir data yang dihantar menggunakan pengekodan Base64.

Logik Pengekodan Base64

Pengekodan Base64 memecahkan data binari kepada segmen 6-bit 3 bait penuh dan mewakilinya sebagai aksara yang boleh dicetak dalam standard ASCII. Ia melakukannya dalam dua langkah.

Langkah pertama ialah memecahkan rentetan binari ke dalam blok 6-bit. Base64 hanya menggunakan 6 bit (bersamaan dengan 2^6=64 aksara) untuk memastikan data yang dikodkan boleh dicetak dan boleh dibaca secara manusia. Tiada satu pun daripada aksara khas yang tersedia dalam ASCII digunakan.

64 aksara (oleh itu dinamakan Base64) ialah 10 digit, 26 aksara kecil, 26 aksara besar serta tanda Tambah (+) dan Garis Slash Hadapan (/). Terdapat juga aksara ke-65 yang dikenali sebagai pad, iaitu tanda Sama (=). Aksara ini digunakan apabila segmen terakhir data binari tidak mengandungi 6 bit penuh.

Contoh Pengekodan Base64

Sebagai contoh, ambil tiga nombor ASCII 155, 162 dan 233. Ketiga-tiga nombor ini membentuk aliran binari 100110111010001011101001. Fail binari, seperti imej, mengandungi aliran binari yang berjalan selama puluhan atau ratusan ribu sifar dan satu lagi.

Pengekod Base64 bermula dengan mencacah strim binari ke dalam kumpulan enam aksara: 100110 111010 001011 101001. Setiap pengelompokan ini diterjemahkan ke dalam nombor 38, 58, 11 dan 41.

Strim perduaan enam aksara menukar antara aksara perduaan (atau asas-2) kepada perpuluhan (asas-10) dengan menduakan setiap nilai yang diwakili oleh 1 dalam urutan perduaan dengan segi empat sama kedudukannya. Bermula dari kanan dan bergerak ke kiri, dan bermula dengan sifar, nilai dalam aliran binari mewakili 2^0, kemudian 2^1, kemudian 2^2, kemudian 2^3, kemudian 2^4, kemudian 2^5.

Berikut ialah cara lain untuk melihatnya. Bermula dari kiri, setiap kedudukan bernilai 1, 2, 4, 8, 16, dan 32. Jika nombor perduaan mempunyai 1 dalam slot, anda menambah nilai itu; jika ia mempunyai 0 dalam slot, anda tidak. Rentetan binari 100110 bertukar kepada nombor perpuluhan 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Pengekodan Base64 mengambil rentetan binari ini dan memecahkannya kepada nilai 6-bit 38, 58, 11 dan 41.

Akhir sekali, nombor ini ditukar kepada aksara ASCII menggunakan jadual pengekodan Base64. Nilai 6-bit contoh ini diterjemahkan kepada urutan ASCII m6Lp.

Menggunakan jadual penukaran Base64:

  • 38 ialah m
  • 58 ialah 6
  • 11 ialah L
  • 41 ialah p

Proses dua langkah ini digunakan pada keseluruhan rentetan binari yang dikodkan.

Untuk memastikan data yang dikodkan boleh dicetak dengan betul dan tidak melebihi had panjang baris pelayan mel, aksara baris baharu dimasukkan untuk mengekalkan panjang baris di bawah 76 aksara. Aksara baris baharu dikodkan seperti semua data lain.

Tujuan keseluruhan pengekodan Base64, daripada menambahkan padding untuk mengekalkan segmen perduaan 3-bait kepada menukar perduaan kepada teks menggunakan jadual Base64, adalah untuk mengekalkan integriti maklumat perduaan yang dihantar.

Jadual Pengekodan Base64

Jadual berikut menterjemahkan kesemua 64 aksara yang digunakan dalam pengekodan Base64.

Jadual Pengekodan Base64
Nilai Char Nilai Char Nilai Char Nilai 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 55 3
8 Saya 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 /

Menyelesaikan Endgame

Pada akhir proses pengekodan, mungkin terdapat masalah. Jika saiz data asal dalam bait ialah gandaan tiga, semuanya berfungsi dengan baik. Jika tidak, mungkin terdapat bait kosong. Untuk pengekodan yang betul, tepat 3-bait data binari diperlukan.

Penyelesaian adalah dengan menambahkan bait yang mencukupi dengan nilai 0 untuk mencipta kumpulan 3-bait. Dua nilai sedemikian ditambahkan jika data memerlukan satu bait tambahan data, satu ditambah untuk dua bait tambahan.

Sudah tentu, jejak tiruan '0' ini tidak boleh dikodkan menggunakan jadual pengekodan di bawah. Mereka mesti diwakili oleh watak ke-65. Aksara padding Base64 ialah tanda Sama (=) dan diletakkan di hujung data yang dikodkan.

Disyorkan: