Base64, binary data olarak adlandırdığımız ikili verilerin ASCII karakterlerini, yani bilgi değişimi için Amerikan Standart Kodlama Sistemi'ni (American Standart Code of Information Interchange) kullanan ortamlarda iletilmesini ve saklanmasını sağlayan bir kodlama algoritmasıdır.
Base64 kodlamada 3 byte'tan oluşan 3*8 bit = 24 bit'lik veri 6 bitlik 4 gruba ayrılır. Bu 6 bitlik 4 adet grubun (0-64) arası decimal değerlerine karşılık gelen karakterler Base64 tablosunda eşleştirilerek kodlama yapılır. Base64 kodlama sonucu elde edilen karakter sayısı 4'ün katları şeklinde olmalıdır. 4'ün katı olmayan kodlanmış veri geçerli bir Base64 verisi değildir. Base64 algoritması ile kodlama yaparken kodlama tamamlandığında verinin uzunluğu 4'ün katı değil ise 4'ün katı olana kadar "=" (eşittir) karakteri kodlamanın sonuna eklenir.
Örnek vermek gerekirse,
Kodlama sonucu elimizde 10 karakterlik Base64 verisi var ise sonuna 2 adet "==" işareti eklenmelidir.
base64kodlama metnini Base64 ile kodlarsak "YmFzZTY0a29kbGFtYQ==" kodunu elde ederiz. Görüldüğü gibi 18 karakter olan kodlamanın sonuna "==" işaretleri eklenerek 4'ün katı olan 20'ye tamamladık.
Base64 kodlarken yaptığımız işlemlerin tersini yaparak orjinal metne dönüş yapabiliriz.
Aşağıda "YXNk" Base64 kodunun nasıl orjinal metne çözümlendiği tablo üzerinde açıklanmıştır.
1. | Base64 Kodu. | Y | X | N | k | ||||||||||||||||||||
2. | Base64 Tablo Karakter Değeri (Base64 Onluk Değeri) | 24 | 23 | 13 | 36 | ||||||||||||||||||||
3. | Base64 Byte Değeri (8 Bit ikili değer) | 00011000 | 00010111 | 00001101 | 00100100 | ||||||||||||||||||||
4. | 6 Bit Base64 (6 Bit İkili Değer) | 011000 | 010111 | 001101 | 100100 | ||||||||||||||||||||
5. | 4 Grup Bit Değeri | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
6. | 3 Grup 8 Bit Değeri | 01100001 | 01110011 | 01100100 | |||||||||||||||||||||
7. | ASCII Değeri | 97 | 115 | 100 | |||||||||||||||||||||
8. | Çözülmüş Kod | a | s | d |
Yukarıdaki tabloda "YXNk" harflerinden oluşan string, Base64 kodlanmış metindir.