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

İnternet bilgi otoyolu ise, e-posta yolu dar bir geçittir. Sadece çok küçük arabaları geçebilir.

E-posta taşıma sistemi sadece düz ASCII metni için tasarlanmıştır. Diğer dillerde metinleri veya rastgele dosyaları göndermeye çalışmak, tırmıktan bir kamyon almak gibidir.

Büyük Kamyon, Ravine'den Nasıl Geçiyor?

O zaman küçük bir vapurdan nasıl büyük bir kamyon gönderiyorsunuz? Bir ucundan parçalara ayırmanız, parçaları uçtan ulaştırmanız ve kamyonu diğer uçtaki parçalardan yeniden yapmanız gerekir.

Aynı şey e-posta yoluyla bir dosya eki gönderdiğinizde de olur. İkili verilerin kodlanması olarak bilinen bir işlemde, sorunsuz bir şekilde e-postayla aktarılabilen ASCII metne dönüştürülür. Alıcının sonunda, veri kodu çözülür ve orijinal dosya yeniden oluşturulur.

Düz ASCII metni olarak rasgele verilerin kodlanması için bir yöntem Base64'tür. Düz metin dışındaki verileri göndermek için MIME standardının kullandığı tekniklerden biridir.

Base64 Kurtarma

Base64 kodlaması, her biri sekiz bitten oluşan üç bayt alır ve bunları ASCII standardında dört basılabilir karakter olarak gösterir. Bunu esasen iki adımda yapar.

İlk adım, üç baytı altı bitlik dört sayıya dönüştürmektir. ASCII standardındaki her karakter yedi bitten oluşur. Base64 sadece kodlanmış verilerin yazdırılabilir ve insanca okunabilir olduğundan emin olmak için 6 bit kullanır (2 ^ 6 = 64 karaktere karşılık gelir). ASCII'de mevcut özel karakterlerin hiçbiri kullanılmamaktadır.

64 karakter (bundan dolayı Base64 ismi) 10 hane, 26 küçük harf, 26 büyük harf ve "+" ve "/" dır.

Örneğin, üç bayt 155, 162 ve 233 ise, karşılık gelen (ve korkutucu) bit akışı 100110111010001011101001'dir, bu da 6-bit değerlerine 38, 58, 11 ve 41 karşılık gelir.

Bu sayılar, Base64 kodlama tablosu kullanılarak ikinci adımda ASCII karakterlerine dönüştürülür. Örneğimizin 6 bitlik değerleri ASCII dizisi "m6Lp" ye çevrilir.

Bu iki aşamalı işlem, kodlanan tüm bayt dizisine uygulanır. Kodlanmış verilerin düzgün bir şekilde basılmasını 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 kodlanır.

Son oyunu çözme

Kodlama işleminin sonunda bir sorunla karşılaşabiliriz. Orijinal verilerin bayt cinsinden boyutu üçte biri ise, her şey iyi çalışır. Değilse, bir veya iki 8 bitlik bayt ile sonuçlanabilir. Doğru kodlama için tam olarak üç bayta ihtiyacımız var.

Çözüm, 3 baytlık bir grup oluşturmak için '0' değeriyle yeterli bayt eklemek. İki ek bayt için ek bir veri baytımız varsa, bu iki değer eklenir.

Tabii ki, bu yapay takip '0'lar aşağıdaki kodlama tablosu kullanılarak kodlanamaz. 65'inci bir karakterle temsil edilmeleri gerekir.

Base64 dolgu karakteri '='. Doğal olarak, sadece şifrelenmiş verilerin sonunda görünebilir.

Base64 Kodlama Tablosu

değer kömür değer kömür değer kömür değer kömür
0 bir 16 S 32 g 48 w
1 B 17 R, 33 h 49 x
2 C 18 S 34 ben 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 ben 24 Y 40 O 56 4
9 J 25 Z 41 p 57 5
10 K 26 bir 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 /