Base64 Kodlaması Nasıl Çalışır?

İçindekiler:

Base64 Kodlaması Nasıl Çalışır?
Base64 Kodlaması Nasıl Çalışır?
Anonim

Base64 kodlama, ikili verileri 6 bitlik karakter gösterimine dönüştürerek ikili verileri bir ASCII dize biçimine dönüştürme işlemidir. Base64 kodlama yöntemi, görüntüler veya video gibi ikili veriler, verileri düz metin (ASCII) biçiminde iletmek üzere tasarlanmış sistemler üzerinden iletildiğinde kullanılır.

Base64 Kodlaması Neden Kullanılıyor?

Base64 kodlaması ihtiyacı, medya ham ikili biçimde metin tabanlı sistemlere iletildiğinde ortaya çıkan sorunlardan kaynaklanır.

Metin tabanlı sistemler (e-posta gibi) ikili verileri özel komut karakterleri de dahil olmak üzere çok çeşitli karakterler olarak yorumladığından, aktarım ortamına iletilen ikili verilerin çoğu bu sistemler tarafından yanlış yorumlanır ve iletim süreci.

Image
Image

Bu tür ikili verileri bu tür aktarım sorunlarını önleyecek şekilde kodlamanın bir yöntemi, bunları Base64 kodlu biçimde düz ASCII metni olarak göndermektir. Bu, düz metin dışındaki verileri göndermek için MIME standardı tarafından kullanılan tekniklerden biridir.

PHP ve Javascript gibi birçok programlama dili, Base64 kodlaması kullanılarak iletilen verileri yorumlamak için Base64 kodlama ve kod çözme işlevleri içerir.

Base64 Kodlama Mantığı

Base64 kodlaması, ikili verileri 3 tam baytlık 6 bitlik bölümlere ayırır ve bunları ASCII standardında yazdırılabilir karakterler olarak temsil eder. Bunu temelde iki adımda yapar.

İlk adım, ikili dizeyi 6 bitlik bloklara bölmektir. Base64, kodlanmış verilerin yazdırılabilir ve insan tarafından okunabilir olmasını sağlamak için yalnızca 6 bit (2^6=64 karaktere karşılık gelir) kullanır. ASCII'de bulunan özel karakterlerin hiçbiri kullanılmaz.

64 karakter (dolayısıyla Base64 adı), 10 rakam, 26 küçük harf, 26 büyük harf karakterin yanı sıra Artı işareti (+) ve Eğik Çizgi'dir (/). Eşit işareti (=) olan ped olarak bilinen 65. bir karakter de vardır. Bu karakter, ikili verinin son bölümü tam 6 bit içermediğinde kullanılır.

Base64 Kodlama Örneği

Örneğin, üç ASCII numarası 155, 162 ve 233 alın. Bu üç sayı 100110111010001011101001 ikili akışını oluşturur. Bir ikili dosya, bir görüntü gibi, on veya yüz binlerce sıfır için çalışan bir ikili akış içerir. ve olanlar.

A Base64 kodlayıcı, ikili akışı altı karakterlik gruplara ayırarak başlar: 100110 111010 001011 101001. Bu gruplamaların her biri 38, 58, 11 ve 41 sayılarına dönüşür.

Altı karakterli bir ikili akış, ikili dizide 1 ile temsil edilen her değeri konum karesiyle karesini alarak ikili (veya taban-2) ondalık (taban-10) karakterlere dönüştürür. Sağdan başlayıp sola hareket eden ve sıfır ile başlayan ikili akıştaki değerler 2^0, sonra 2^1, sonra 2^2, sonra 2^3, sonra 2^4, sonra 2^5'i temsil eder.

İşte buna bakmanın başka bir yolu. Soldan başlayarak, her konum 1, 2, 4, 8, 16 ve 32 değerindedir. İkili sayı yuvada 1'e sahipse, bu değeri eklersiniz; yuvada 0 varsa, yok. 100110 ikili dizgisi 38 ondalık sayıya dönüşür: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Base64 kodlaması bu ikili dizgiyi alır ve onu 38, 58, 11 ve 41'lik 6 bitlik değerlere ayırır.

Son olarak, bu sayılar Base64 kodlama tablosu kullanılarak ASCII karakterlerine dönüştürülür. Bu örneğin 6 bit değerleri ASCII dizisine çevrilir m6Lp.

Base64 dönüşüm tablosunu kullanma:

  • 38 m
  • 58 6
  • 11 L'dır
  • 41 p

Bu iki adımlı işlem, kodlanmış ikili dizenin tamamına uygulanır.

Kodlanmış verilerin düzgün şekilde yazdırılabilmesini ve herhangi bir posta sunucusunun satır uzunluğu sınırını aşmamasını sağlamak için, satır uzunluklarını 76 karakterin altında tutmak için yeni satır karakterleri eklenir. Yeni satır karakterleri, diğer tüm veriler gibi kodlanmıştır.

3 baytlık ikili segmentleri korumak için dolgu eklemekten Base64 tablosunu kullanarak ikiliyi metne dönüştürmeye kadar Base64 kodlamasının tüm amacı, iletilen ikili bilgilerin bütünlüğünü korumaktır.

Base64 Kodlama Tablosu

Aşağıdaki tablo, Base64 kodlamasında kullanılan 64 karakterin tamamını çevirir.

Base64 Kodlama Tablosu
Değer Karakter Değer Karakter Değer Karakter Değer Karakter
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 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 /

Oyun Sonunu Çözme

Kodlama işleminin sonunda bir sorun olabilir. Orijinal verilerin bayt cinsinden boyutu üçün katıysa, her şey yolunda gider. Değilse, boş baytlar olabilir. Doğru kodlama için tam olarak 3 baytlık ikili veri gereklidir.

Çözüm, 3 baytlık bir grup oluşturmak için 0 değerinde yeterli bayt eklemektir. Verinin fazladan bir bayt veriye ihtiyacı varsa, bu tür iki değer eklenir, biri iki ekstra bayt için eklenir.

Elbette, bu yapay sondaki '0'lar aşağıdaki kodlama tablosu kullanılarak kodlanamaz. 65. karakterle temsil edilmelidirler. Base64 dolgu karakteri Eşittir işaretidir (=) ve kodlanmış verilerin sonuna yerleştirilir.

Önerilen: