Yazan : Şadi Evren ŞEKER
Veri güveliği konusunda kullanılan kodlama (encoding) algoritmalarından birisidir. Basitçe bir bilginin farklı semboller ile gösterilmesi işlemidir. Bu semboller alfabedeki harflerin büyük/küçük sıralanması ve sayılardan oluşur. Bir base64 sisteminin kullandığı semboller aşağıda verilmiştir:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
Yukarıda toplam 64 sembol bulunmaktadır. Dolayısıyla her sayıya bir karşılık gelir. Örneğin 0 sayısal değeri için A , 63 sayısal değeri için / sembolü gibi.
Bir metnin base64’e çevrilmesi işlemi ise ikilik tabanda
ascii kodları ile metni kodlayıp ardından metni base64 için tamamlamak ve yukarıdaki sembollerle ifade etmektir. Bu işlemin nasıl yapıldığını adım adım inceleyelim.
Base64 ile kodlamak istediğimiz mesajımız “www.bilgisayarkavramlari.com” olsun. Bu mesajdaki her harfin karşılığı olan ASCII kodunu bulalım:
119 119 119 46 98 105 108 103 105 115 97 121 97 114 107 97 118 114 97 109 108 97 114 105 46 99 111 109
Yukarıdaki dizilimde her sembol için karşılığı olan ASCII kodu yazılmıştır. Buna göre örneğin mesajımızın ilk harfi olan w için 119 veya mesajın son harfi olan m için 109 sayısı tablodan bulunmuştur.
Yukarıdaki çevrilmiş ve onluk tabandaki sayıları ikilik tabana çevirirsek:
0111 0111 0111 0111 0111 0111 0010 1110 0110 0010 0110 1001 0110 1100 0110 0111 0110 1001 0111 0011 0110 0001 0111 1001 0110 0001 0111 0010 0110 1011 0110 0001 0111 0110 0111 0010 0110 0001 0110 1101 0110 1100 0110 0001 0111 0010 0110 1001 0010 1110 0110 0011 0110 1111 0110 1101
Mesajını buluruz. Yukarıdaki mesajda her 8 bit (ikil) ASCII tablosunda bir sayıya karşılık gelir. Örneğin mesajın ilk 8 biti (ikili) 0111 0111, oluk tabana çevrilirse 119 yapar ve bu değer tablodaki w sembolüne karşılık gelir. Yukarıda toplam 224 bit (ikil) bulunmaktadır. Çünkü mesaj uzunluğu 28 karakterdir ve her karakter için 8 bit kullanılmıştır.
Yukarıdaki mesajın base64 ile kodlanması sırasında mesajın eksik bulunan bitlerinin tamamlanması gerekir. Buradaki hesap basitçe mesajın boyutunun 24’ün katı olana kadar 8’er bitlik 0 (sıfırların) eklenmesidir.
Bu yazı şadi evren şeker tarafından yazılmış ve bilgisayarkavramlari.com sitesinde yayınlanmıştır. Bu içeriğin kopyalanması veya farklı bir sitede yayınlanması hırsızlıktır ve telif hakları yasası gereği suçtur.
Mesajda toplam 224 bit bulunuyor ve 224, 24’e tam olarak bölünemiyor. Bu durumda sayımız 24’e tam bölünebilmesi için 240’a tamamlanması gerekir. Sonuçta mesajımız aşağıdaki şekilde olacaktır:
0111 0111 0111 0111 0111 0111 0010 1110 0110 0010 0110 1001 0110 1100 0110 0111 0110 1001 0111 0011 0110 0001 0111 1001 0110 0001 0111 0010 0110 1011 0110 0001 0111 0110 0111 0010 0110 0001 0110 1101 0110 1100 0110 0001 0111 0010 0110 1001 0010 1110 0110 0011 0110 1111 0110 1101 0000 0000 0000 0000
Görüldüğü üzere sonuna 16 adet 0 eklenmiştir. Şimdi artık mesajımız base64 kodlamasında işlenmeye hazırdır. Mesajı bu sefer 6 bitlik parçalara bölüp onluk sisteme çevirebiliriz. Buradaki amaç bizim kodlamamızdaki 64 sembolden hangisine karşılık geldiğini bulmaktır.
Örneğin mesajın ilk 6 biti 011101 ‘dir ve onluk sistemde 29 yapar. Bu bizim kodlamamızda yukarıda verilen sembollerden 29. Sembol ile gösterileceğini ifade eder. Bu sembol A harfi 0 olarak kabul edilip sayılırsa d harfi olarak bulunur. Benzer şekilde bir sonraki 6lık grup alınırsa 110111 sayısını onluk tabanda 55 sayısı bulunur ve bizim kodlamamızda 55 sayısı ile 3 sembolü gösterilmektedir.
Yukarıdaki bu işlemi bütün mesaj için uygularsak sonuçta www.bilgisyarkavramlari.com mesajı için aşağıdaki sonuç bulunur:
d3d3LmJpbGdpc2F5YXJrYXZyYW1sYXJpLmNvbQ==
Yukarıdaki mesaj tam bir base64 çevrimidir. Burada mesajın sonunda bulunan == sembollerinin bizim kodlamamızda yer almadığına dikkat ediniz. Bu semboller mesajın ayrılmasını sağlayan son eklerdir.
Base64 örneğin MIME protokolünün içerisinde gönderilen mesajlara uygulanan bir kodlamadır.