21 Ocak 2018 Pazar

Base64 Kodlama

Binary verileri karakter dizilerine döndüren kodlama şeklidir. Başta http olmak üzere email metinleri de bu kodlama ile kodlanarak karşı tarafa iletilirler. Başlangıçta PEM - Privacy-enhanced Electronic Mail olarak adlanrılmasına rağmen zamanla Base64 adını almıştır. Günümüzde web tabanlı otomasyonlarda resim benzeri medyalar Base64 kullanılarak kodlanır ve o şekilde saklanırlar. Temel çalışma mantığı 8 bitlik verilerin 6 bitlik karakter cetveline dönüştürülmesidir. ASCII karakterlerin kodlanması için 7bit=128 karakter kullanılırken Base64 de 6 bit kullanılır. Sayılar, büyük harfler ve küçük harflerden oluşan dönüşüm tablosu mevcuttur. Bunun yanısıra + ve - karakterleri de tabloya eklenir.
Base64 dönüşüm tablosu

Programlama esnasında bu tablo;
char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

olarak tanımlanabilir. Peki alınan veriler nasıl kodlanır. Diyelim ki sayısal olarak üç tane veri alınmış olsun; 155, 162 ve 233. Bu sayıların 8 bitlik binary karşılıkları aşağıdaki gibidir;

155 -> 10011011
162 -> 10100010
233 -> 11101001

Şimdi bu binary rakamları yanyana ekleyelim;
100110111010001011101001

elimizde 24 bitlik bit karakter dizisi oluşmuş oldu. Base64 de 64 karakter olduğu için 6 bitlik sayılarla ifade edilebilirler. Dolayısı ile yukarıdaki 24 biti 6şar bitlik verilere bölceğiz;
100110 -> 38
111010 -> 58
001011 -> 11
101001 -> 41

Bölme işleminden sonra her bir 6 biti tekrar 10 luk tabana çevirelim. Elde ettiğimiz rakamlar Base64 dönüşüm tablosundan alınacak;
38 -> m
58 -> 6
11 -> L
41 -> p

bu şekilde sayısal kodlama tamamlanacaktır. Base64 dönüşümünde eğer 6 bitlik bölümlerde sayısal veri yetmiyorsa sonu 0 ile doldurulur. Son karakter 0 ile bitiyorsa 65. karakter olarak = işareti eklenir.

Hiç yorum yok:

Yorum Gönder