• 18 HAZİRAN 2020
  • Okunma Sayısı: 649

Fatih AKBAŞ - Karaelmas Kriptoloji Takımı

Zonguldak Bülent Ecevit Üniversitesi - [email protected]

GİRİŞ
Bu yazımda günlük hayatta olarak karşımıza çıkan BASE64 bahsedeceğim.

1.1 BASE64 NEDİR?

Veri iletimi sırasında veri kaybını önlemek amacıyla geliştirilmiş bir kodlama tekniğidir. Bir çoğumuz bunu Base64 şifreleme yöntemi olarak biliriz ama Base64 bir şifreleme yöntemi değil, bir kodlama yöntemidir. Bu kısma dikkat çekmek istiyorum. Çünkü BASE64 kullanırken şifrelem yapmıyoruz. Her harfi ayrı ayrı kodluyoruz. Bu yüzden şifreleme olmuyor. Kodlanmak istenen veri öncelikle karakter karakter ayrılır.  Daha sonra her bir karakterin 8 bit uzunluğundaki binary karşılığı bulunur.Bulunan 8 bitlik ifadeler yan yana yazılır ve tekrar 6-bitlik gruplara bölünür. Her bir 6-bitlik grubun Base64 alfabesindeki karşılığı yazılır ve kodlama işlemi tamamlanır.Kod çözme işlemi (Decode) içinde aynı işlemlerin tersi uygulanır. Şimdi kısa bir örnekle BASE64 kodlama mantığını anlatalım.


BASE64 ÇALIŞMA ŞEKLİ / MANTIĞI

2.1 BASE64 TABLOSU

Rakam Karakter Rakam Karakter Rakam Karakter Rakam Karakter

2.2BASE64 İLE İLGİLİ ÖRNEK

Kodlamasını yapacağımız kelimemiz ‘istanbul’ olsun.

2.2.1 ÖRNEK 1.AŞAMA: Binary Karşılığını Bul

Öncelikle ‘istanbul’ kelimesinin herbir karakterinin ASCII karşılığını bulacağız, daha sonrada bulduğumuz herbir decimal değerin 8-bitlik binary karşılığını hesaplayacağız, dolayısıyla istanbul kelimesinin binary karşılığını bulmuş olacağız. 


2.2.2 ÖRNEK 2.AŞAMA: 6 Bitlik Kısımlara Ayır

Şimdide bulduğumuz binary değerini 6-bitlik kısımlara ayıracağız.Bu aşama algoritmanın en önemli aşaması diyebilirim.Çünkü 6-bit kısımlara ayırma işlemi yaparken eğer değerimizin uzunluğu 6 nın katı değil ise 6’nın katı olana dek sonuna 8 bit uzunluğunda ‘00000000’ değerini ekleyeceğiz. “istanbul” kelimsenin herbir harfinin binary karşılığını yan yana yazdığımız zaman uzunluğu 64 bit oluyor.Fakat 64 altının katı olmadığı için sonuna 8 bit uzunluğunda 0 ekliyoruz ve 72 bit oluyor yani 6 nın katına ulaşmış olduk.Bakın burası çok önemli ,66 da altının katı ama yapmadık , 72 yaptık çünkü 6 nın katına ulaşma işlemini 8 bit 0 ekleyerek yapmamız gerekiyor. Örneğin uzunluğumuz 80 bit olsaydı iki kez 8 bit ekleyecektik ve 96 ya tamamlayacaktık. Kısacası uzunluğumuzu 24 ün katına tamamlamaya çalışıyoruz.


2.2.3 ÖRNEK 3.AŞAMA: BASE64 Alfabesindeki Değerleri Bul

Bu aşamada 2. aşamada bulduğumuz 6-bitlik grupların Base64 alfabesindeki karşılığını bulacağız.Önce 6-bitlik grupların decimal karşılığını hesaplaycağız , daha sonra Base64 alfabesindeki hesapladığımız decimal değere karşılık gelen karakteri bulacağız.Ama burada dikkat etmemiz gereken bir kısım var .Eğer sondaki 6-bitlik gruplar bizim eklediğimiz 0 lardan oluşuyor ise onların yerine ‘ = ‘ yazıyoruz.Bu önemli bir nokta çünkü biz eğer base64 ile kodlanmış metini tekrar eski haline döndürmek istediğimiz zaman ‘ = ‘ işaretlerinin sayısına bakarak bu metini kodlamak için kaç tane 8-bit lik sıfır eklendiğini biliriz.


Metin : istanbul
Base64 ile kodlanmış hali : aXN0YW5idWw=
Metini geri döndürmek(Decode) içinde aşağıdan yukarıya doğru aşamalar tekrar
uygulanır:
•Herbir karakterin Base64 alfabesinde karşılık gelen sayıyı bul
•Bulunan herbir sayının binary karşılığını bul
•Binary değerleri yana yana yaz ve 8-bit gruplara ayır
•Eğer sonradan eklediğimiz bitler varsa çıkar ( 8-bitlik 0 lar varsa)
•Herbir 8-bitlik grupların decimal değerlerini bul
•Decimal değerlere göre ASCII tablosunda karşılık gelen değeri yaz

KAYNAKÇA
1. https://github.com/aozturkk/Kriptoloji/tree/master/Base64
2. https://aliozturk.com.tr/index.php/2019/03/12/base64-kodlama/
3. https://tr.wikipedia.org/wiki/Base64
 

TÜM MAKALELER